我正在看我书中的以下代码:
class Shape
{
public:
Shape(){}
~Shape(){}
virtual long getArea() = 0; // Pure virtual function
virtual long getPerim() = 0;
virtual void draw() = 0;
};
现在它说这些虚函数使类抽象(我从Java中理解),因此无法实例化该类。
但是,它说:“通过在类声明中包含一个或多个虚函数,类是抽象数据类型。”
如果我用 ONE 纯虚函数声明一个类,这是否意味着:
class Shape
{
public:
Shape(){}
~Shape(){}
virtual long getArea() = 0; // Only pure virtual function
virtual long getPerim(){}
virtual void draw(){}
};
是不是整个类都变得抽象了?因为如果一个类有 100 多个方法,如果我决定稍后将其抽象化,则为每个方法编写 =0
会很乏味。
最佳答案
是的,单个纯 virtual
方法足以使类抽象。
此外,如果没有其他方法适合纯析构函数,您始终可以将析构函数设为纯虚拟
。
此外,您的析构函数可能应该是 virtual
,因为您显然将从此类继承。如果您计划通过指向基类型的指针删除派生类型的对象,则这是强制性的。
关于c++ - 防止通过纯虚函数实例化类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13031627/