2013-07-17 62 views
-2

因为它位于标题处。我不希望派生类继承基类的构造函数

这里是例子:

#include <iostream> 

using namespace std; 

class Base { 
private: 
    int nSize; 

public: 
    Base(){ 
     cout << "I'm Base constructor" << endl; 
    } 
}; 

class Derived : public Base { 
    int nMaxSize; 

public: 
    Derived(){ 
     cout << "I'm Derived constructor" << endl; 
    } 
}; 

int main(){ 
    Derived obj; 

    return 0; 
} 

结果:

 
I'm Base constructor 
I'm Derived constructor 
+1

创建派生类的对象时,总是会调用基类构造函数,这就是继承的工作方式。也许作文会是一个更好的选择。 – Borgleader

+0

派生对象必须以某种方式构建其基础对象。比不继承的 – Rapptz

+0

。 – user1810087

回答

3

你别无选择。你可以做的最好的方法是将一个标志传递给基础构造器,禁用你不想要的东西。但是这表明糟糕的设计。