C++中为什么类的构造函数一般设置成保护类型,析构函数设置成公有类型?

class Factory
{
public:
virtual ~Factory()=0;

virtual Product* CreateProduct()=0;

protected:
Factory();
private:
};
“~Factory()=0”中的“=0”代表什么意思

virtual 函数定义后的=0是指纯虚函数。
析构函数设置为公有是让其可以析构,私有的析构函数不能正常析构调用。

至于为什么这个类的构造函数设置为保护,是因为有纯虚函数的类都是抽象类,抽象类不能实例化,因此这么写可以提醒程序员不要new。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-30
设置成保护的是为了防止在类外面创建对象,例如设置成保护的,就不允许这样创建对象:Factory fc;
“~Factory()=0”中的“=0”代表该函数是一个纯虚函数,即没有实现的函数,需要子类继承实现该函数。
相似回答