无法从派生类中调用基类的构造

无法从派生类中调用基类的构造

问题描述:

说我有一个基类:无法从派生类中调用基类的构造

class baseClass 
{ 
    public: 
baseClass() { }; 

}; 

而派生类:

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

    }; 

当我创建的derClass实例的baseClass调用构造函数。我怎样才能防止这一点?

+1

你没有;这没有意义。你为什么认为你需要这样做? – GManNickG 2010-10-31 21:05:46

+0

@GMan我有一个基类,在构造函数中使用头部准备数据。派生类不需要准备好头文件,但它调用正在准备头文件的基类构造函数,并将其中的某些内容混淆。 – Brad 2010-10-31 21:10:15

+3

你错过了继承的点。继承形成“一个是B”的关系。如果B做了A不应该做的事情,那么A不是B. – 2010-10-31 21:17:00

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

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

制作额外的空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) { }; 

};