[問題] 關於繼承的建構子
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2008
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
沒有
問題(Question):
有關繼承與建構子的問題
有3個class 大致如下
class A{
protected:
void *memory;
public:
A(){ mem = NULL; }
};
class B: virtual protected A{
public:
B(): A(){}
};
class C: public B{
public:
C(): B(){} // 寫法1
C(): { this->B::B(); } // 寫法2
};
int main(){
C c;
return 0;
}
問題在C class的建構子 呼叫其繼承而來的建構子
兩種作法似乎不太一樣
寫法1: 成員memory順利變成NULL
寫法2: 成員memory在C::C()內順利變成NULL 但一回到main就又變回0xFEFEFEFE
為什麼會這樣子呢?
兩種做法不都應該是一樣的結果嗎?
還是我誤解了什麼地方呢?
謝謝各位板大替小的解惑
餵入的資料(Input):
預期的正確結果(Expected Output):
寫法1與寫法2 成員men皆應該變成NULL
錯誤結果(Wrong Output):
寫法2的memory是0xFEFEFEFE
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.54.45
※ 編輯: yayarice 來自: 140.114.54.45 (03/28 17:37)
→
03/28 19:20, , 1F
03/28 19:20, 1F
推
03/28 23:15, , 2F
03/28 23:15, 2F
推
03/29 00:57, , 3F
03/29 00:57, 3F
→
03/29 15:53, , 4F
03/29 15:53, 4F
→
03/30 01:16, , 5F
03/30 01:16, 5F
→
03/30 01:16, , 6F
03/30 01:16, 6F