【发布时间】:2013-10-16 09:29:05
【问题描述】:
定义类 X、Y 和 Z,使得 Y 是 X 的子级,Z 是 Y 的子级。Y 类应该是抽象的。
如何声明 Y 类,因为它应该是抽象的?
【问题讨论】:
-
至少要有一个纯虚成员函数。
标签: c++ inheritance abstract-class
定义类 X、Y 和 Z,使得 Y 是 X 的子级,Z 是 Y 的子级。Y 类应该是抽象的。
如何声明 Y 类,因为它应该是抽象的?
【问题讨论】:
标签: c++ inheritance abstract-class
class X
{
};
class Y : public X
{
public:
// For defining an abstract class without pure virtual functions:
virtual ~Y() = 0;
virtual void method() = 0;
};
class Z : public Y
{
public:
void method() override
{
}
};
【讨论】:
abstract 关键字。如果一个类有一个纯虚成员函数,那么它就是隐式抽象的。
abstract 不是 C++ 关键字。要么你没有编译 C++,要么你有一个带有非标准扩展的编译器。
class Y {
public:
virtual void foobar() = 0;
};
这是 c++ 意义上的抽象类。
【讨论】: