Re: [問題] base constructor
你所提的想法應該是不可行的
因為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
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):