【发布时间】:2012-10-13 10:55:06
【问题描述】:
我正在看我书中的以下代码:
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 会很乏味。
【问题讨论】:
-
想想如果你可以用一个纯函数实例化一个类,然后尝试调用它会发生什么......
-
如果一个类有 100 多个方法,那么您需要解决一些设计问题。
-
@juanchopanza 哈哈,是的,我是在假设。
标签: c++ class polymorphism abstract-class