7 c++ polymorphism abstract-class class
我正在看我书中的以下代码:
class Shape
{
public:
Shape(){}
~Shape(){}
virtual long getArea() = 0; // Pure virtual function
virtual long getPerim() = 0;
virtual void draw() = 0;
};
Run Code Online (Sandbox Code Playgroud)
现在它说这些虚函数使类抽象(我从Java中理解),因此该类无法实例化.
但是,它说:"通过在类声明中包含一个或多个虚函数,类是抽象数据类型."
这是否意味着如果我声明一个具有一个纯虚函数的类:
class Shape
{
public:
Shape(){}
~Shape(){}
virtual long getArea() = 0; // Only pure virtual function
virtual long getPerim(){}
virtual void draw(){}
};
Run Code Online (Sandbox Code Playgroud)
整个班级变得抽象吗?因为如果一个类有100多个方法,=0
如果我决定稍后将它抽象化,那么为每个方法编写它将会很繁琐.
Luc*_*ore 12
是的,单个纯virtual
方法足以使类抽象化.
此外,virtual
如果没有其他方法适合纯粹,你总是可以使析构函数变得纯净.
另外,你的析构函数应该是virtual
,因为你显然要继承这个类.如果您计划通过指向基类型的指针删除派生类型的对象,则必须执行此操作.