【发布时间】:2014-01-30 06:18:47
【问题描述】:
我有两个班级,Abstract 和 Base。 Abstract 是 Base 类的基础。
class Abstract
{
public:
virtual ~Abstract();
const int aID;
protected:
// Constructor is protected because this class is abstract.
Abstract(int xID) :
aID(xID){}
};
#define BASE_CLASS_ID 0x0001
class Base : public Abstract
{
public:
Base() :
Abstract(BASE_CLASS_ID){} // change the ID
};
现在对于这个基类的任何 Derived 类,我希望使用相同的 ID BASE_CLASS_ID。
如何要求我的所有派生类都采用这种行为?
【问题讨论】:
-
你已经做到了!
-
顺便说一句,Derived 会调用 Base::Base(),但不会调用 Abstract::Abstract()
-
你能告诉我怎么做吗?我不认为 Derived 会自动调用 Base 构造函数,还是这样?
-
任何继承
Base的类都必须调用Base的构造函数(在这种情况下不需要,因为Base::base()没有参数,所以它会被自动调用。Base的构造函数已经使用BASE_CLASS_ID调用Abstract的构造函数。 -
我假设你声明
class Derived : public Base,对吗?
标签: c++ abstract-class derived-class