提供基类构造函数

时间:2017-10-26 00:00:05

标签: c++ inheritance

是否有必要始终为您的基类提供构造函数?例如,如果我有以下基类,然后是一些派生类。

class Animal
{
 public:

    //Is this constructor necessary?
    Animal(); 

    virtual ~Animal();
};

class Zebra: public Animal
{
 public:
    Zebra();
   ~Zebra();
};

class Elephant: public Animal
{
 public:
    Elephant();
   ~Elephant();
};

假设我正在创建Animal指针,然后动态分配新的Zebra和Elephant对象。如果我从不打算创建一个Animal对象,那么是否真的需要显式创建一个Animal构造函数?

1 个答案:

答案 0 :(得分:2)

您不需要显式提供构造函数。 生成默认值(如果您不提供其他构造函数)。

所以

class Animal
{
public:

    virtual ~Animal();
};

就足够了。

派生类构造函数将调用Base类构造函数(显式地隐式)。