Re: [問題] base constructor

看板C_and_CPP作者 (kixlon)時間14年前 (2010/06/23 00:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
你所提的想法應該是不可行的 因為class B的constructor會在D建構之前被呼叫 我舉個例子來說明好了 底下的例子,我們試圖由D的constructor傳給B一個reference 希望能藉由D去修改該reference的值,然後在傳到B的constructor 但實際上這是無法達成的,因為B的constructor會在D的constructor被呼叫之前被觸發 #include <iostream> using namespace std; class B { public: B() { } B ( int n ) { cout << "This is B" << endl; cout << "n = " << n << endl; } }; class D : public B { public: D() { } D ( int &m ):B(m) { cout << "This is D" << endl; m = 2; } }; int main() { int a = 1; D d(a); return 0; } 因此B收到的m會是一開始的"1" 執行結果如下, This is B n = 1 This is D -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.174.183
文章代碼(AID): #1C8EeJo2 (C_and_CPP)
文章代碼(AID): #1C8EeJo2 (C_and_CPP)