2012-09-28 18 views
0

這裏的構造一個繼承的類是一類:通過調用兩個參數化的父類的構造函數

class P1{ 
public: 
    P1(int i){} 
}; 

下面是另一個類:

class P2{ 
public: 
    P2(int i){} 
}; 

這裏是從上面的兩個類繼承的類:

class D: public P1, public P2{ 
    //? 
}; 

我是否也侵入了這兩個類的構造函數?
如何編輯d類,這樣我可以通過以下方式構建派生類:

D d(11,22); 
+1

不,您沒有___繼承構造函數。但是你可以訪問基類的構造函數。 – Hindol

+0

你需要的是[Member Initalizer list](http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-constructor)。 –

+1

class P1:代替A代表P1嗎? –

回答

3
class D : public P1, public P2 
{ 
    public: 
     D(int x, int y) : P1(x), P2(y) 
     { 
     } 
}; 
2

這是爲了做到這一點,

class D: public P1, public P2{ 
    D(int x, int y) // Have your own constructor for the derived class 
     : P1(x), P2(y) {} 
}; 
1

構造能t隱含繼承。 但是爲了能夠使用基類構造函數,使用成員初始化語法已經在prevoius答案中提出了

相關問題