class Parent
{
public:
int member;
Parent():
member(0)
{
}
};
class Child:
public Parent
{
public:
Child():
member(1) //error
{
}
};
2
A
回答
1
class Parent
{
public:
int member;
Parent(int m = 0):
member(m) // constructor takes an argument, default as 0
{
}
};
class Child:
public Parent
{
public:
Child():
Parent(1) // refer to super class's constructor here
{
}
};
0
只需在函數體中使用member = 1;
即可。
說明:初始化列表僅適用於類自己的字段(包括父類的構造函數)。除此之外,父類將首先被構造(因此當你的子類被構造時它的初始化列表已經被執行),所以你的代碼會再次構造成員,這是沒有意義的。
0
初始化列表中是否有允許使用其它構造比默認的一個。顯然,一個Child構造函數不能選擇除Parent構造函數以外的任何東西來使用。所以兩個解決方案:
- 添加一個構造函數家長做你想要的東西,使它的保護,如果需要
- 簡單地添加在兒童構造的分配。
1
更改您的代碼:
class Child:
public Parent
{
public:
Child()
{
member = 1;
}
};
或嘗試:
class Child:
public Parent
{
public:
Child():Parent(),member(1)
{
}
};
6
class Parent{
private:
int member;
public:
Parent():
member(0){
}
protected:
explicit Parent(int x):
member(x){
}
};
class Child:
public Parent {
public:
Child():
Parent(1){
}
};
相關問題
- 1. 類成員初始化父類
- 2. 爲什麼?從未初始化的父類成員隱式初始化
- 3. 使用初始化列表(C++)初始化父級的受保護成員
- 4. 如何初始化靜態成員
- 5. arm_rfft_init_q31:cfft成員如何初始化?
- 6. 結構成員初始化
- 7. 結構成員初始化
- 8. 類成員初始化
- 9. 在初始化其他成員時跳過結構成員的初始化
- 10. 如何初始化C++中的基本成員初始化部分的std :: map?
- 11. 初始化會員和成員
- 12. 初始化向量的元組類成員初始化列表
- 13. GCC - 成員應該在成員初始化列表中初始化
- 14. 在C#中初始化子類中的父類數組成員
- 15. 如何在初始化其他初始化後初始化類的靜態成員?
- 16. 不能在成員初始化列表初始化對象
- 17. 在初始化列表中初始化引用對象成員
- 18. 代替成員初始化和集合初始化
- 19. 如何使用成員初始化列表來初始化數組?
- 20. 初始化結構的私有成員
- 21. 對象靜態成員的初始化
- 22. c#中的成員初始化
- 23. 非顯式初始化成員在其成員初始化的結構中始終爲0?
- 24. 類成員初始化差異
- 25. 靜態成員變量初始化
- 26. C++初始化類成員對象
- 27. C++類構造和成員初始化
- 28. 靜塊VS靜態成員初始化
- 29. 強制靜態成員初始化
- 30. C++類成員初始化(POCO)
你打我吧:)雖然我的版本,我不改基類的公共接口 – 2010-11-28 19:13:29
@阿門你的也很好。我不認爲我犯了罪,因爲班級的用戶不必更改他的代碼。這是開發人員的選擇。 – chrisaycock 2010-11-28 19:16:03