不从派生类调用基类构造函数

Bra*_*rad 9 c++ class derived-class

假设我有一个基类:

class baseClass  
{  
  public:  
baseClass() { };

};
Run Code Online (Sandbox Code Playgroud)

派生类:

class derClass : public baseClass
    {  
      public:  
    derClass() { };

    };
Run Code Online (Sandbox Code Playgroud)

当我创建一个被调用derClass的构造函数的实例时 baseClass.我怎么能阻止这个?

Ale*_*tov 16

做额外的空ctor.

struct noprapere_tag {};

class baseClass  
{  
public:  
  baseClass() : x (5), y(6) { };

  baseClass(noprapere_tag) { }; // nothing to do

protected:
  int x;
  int y;

};

class derClass : public baseClass
{  
public:  
    derClass() : baseClass (noprapere_tag) { };

};
Run Code Online (Sandbox Code Playgroud)


CB *_*ley 5

基类实例是任何派生类实例的组成部分。如果成功构造了派生类实例,则必须-根据定义-构造所有基类和成员对象,否则派生对象的构造将失败。构造基类实例涉及调用其构造函数之一。

这是继承在C ++中如何工作的基础。