我正在做一项练习,要求我采用基类 Rodent 并将其设为纯抽象类。我对纯抽象类的理解是它充当接口并且仅包含纯虚函数。虽然这是一个简单的练习,但我对本书提供的解决方案有疑问:
class Rodent
{
public:
virtual ~Rodent() {cout << "Destroy rodent" << endl;}
virtual void run() = 0;
virtual void squeak() = 0;
};
正如您所看到的,作者为析构函数添加了一个虚拟定义。添加这个定义是否不意味着这是一个抽象类而不是一个“纯粹”的抽象类?
抽象类must包含最后一个纯虚函数。
你的类已经有两个纯虚函数run()
and squeak()
,所以你的类是抽象的,因为这两个纯虚函数。
您不能创建此类的任何对象。
EDIT:
纯抽象类是专门具有纯虚函数(并且没有数据)的类。
由于您的析构函数不是纯虚拟的,因此您的类不是纯抽象类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)