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

2024-11-27 04:30:44
推荐回答(2个)
回答1:

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

至于为什么这个类的构造函数设置为保护,是因为有纯虚函数的类都是抽象类,抽象类不能实例化,因此这么写可以提醒程序员不要new。

回答2:

设置成保护的是为了防止在类外面创建对象,例如设置成保护的,就不允许这样创建对象:Factory fc;
“~Factory()=0”中的“=0”代表该函数是一个纯虚函数,即没有实现的函数,需要子类继承实现该函数。