[問題] 繼承中class的成員初始問題?
class B {
int value;
public:
B(){value = 0;}
B(int v)
{
value = v;
}
};
class A:public B {
string str;
public:
A(){str = "";}
A(string s, int v):B(v)
{
str = s;
}
A *a;
};
1. 我想在class A中加一個型態為A的成員a(紅字部分),並對它做初始,
但是不能寫成A *a = new A("test", 4);,以及我不清楚A *a;放置的位置
是否正確(雖然現在的位置似乎不會編譯錯誤),請問這樣的情形該如何撰寫?
2. 是不是若要在A中寫出預設建構子A(),就必須在基礎類別B中也把預設建構
子B()寫出來?
感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.201.221
→
05/18 16:13, , 1F
05/18 16:13, 1F
→
05/18 16:19, , 2F
05/18 16:19, 2F
→
05/18 16:20, , 3F
05/18 16:20, 3F
→
05/18 16:56, , 4F
05/18 16:56, 4F
再請教:
我剛才看了一下initialization list,就是將建構子寫成像
A(string s = ""):str(s)
{
}
對吧
那如果我要在class A中有型態為A的成員a和b並賦值給它們固定的值,所以在class A中
宣告
A* a;
A* b;
但是因為無法直接new成
A* a = new A("test", 4);
A* b = new A("test2", 5);
所以只好把new的動作放到建構子裡做,但是這裡class A有兩種建構子,因此只能
在兩種建構子裡都丟一樣的new的動作了嗎?是不是還有其他比較建議的方式呢?
※ 編輯: Hypnus 來自: 114.33.201.221 (05/18 20:08)
→
05/18 20:11, , 5F
05/18 20:11, 5F
→
05/18 20:14, , 6F
05/18 20:14, 6F
yep,我之前想錯了,james732大說的是對的,謝謝各位了
※ 編輯: Hypnus 來自: 114.33.201.221 (05/20 02:34)