定义抽象基类的默认构造函数

时间:2011-08-28 02:33:28

标签: c++

class ClassA {
public:
    ClassA() {} // when this function must be provided
    virtual ~ClassA() = 0 {}
};

class ClassB : public ClassA
{
    // ...        
};

我想知道何时必须提供抽象基类的默认构造函数。

2 个答案:

答案 0 :(得分:2)

提供默认构造函数与类的抽象性之间没有联系。

如果需要初始化,

提供默认构造函数定义。

如果要禁止默认构造,请提供(可能未实现的)非公开声明。

欢呼&第h。,

答案 1 :(得分:2)

如果它确实是一个没有数据成员的抽象基类,那么编译器生成的构造函数在每种情况下都是完全足够的。

派生类将始终调用默认的基类构造函数,除非它们的构造函数在初始化列表中指定了不同的构造函数。