我有一個引用的類測試默認構造函數。爲什麼通過指針完成引用中斷
class test {
public:
test(int &input1) : int_test(input1) {};
~test() {};
int & int_test;
};
然後加入2-多個類,其與測試相互作用如下:
class notebook
{
public:
notebook() {};
~notebook() {};
int int_notebook;
};
class factory
{
public:
factory() {};
~factory(){};
notebook *p_notebook;
};
如果我的整數intitalise試驗(T2),該按預期方式工作:
int _tmain(int argc, _TCHAR* argv[]){
int var=90;
test t2(var);
cout<<t2.int_test; // this gives 90
var=30;
cout<<t2.int_test; // this gives 30
一旦我用指向筆記本成員的指針通過第三級工廠初始化測試類:
factory f1;
notebook s1;
notebook s2;
s1.int_notebook=10;
s2.int_notebook=2;
int notebook::*p_notebook= ¬ebook::int_notebook;
f1.p_notebook=&s1;
test t1(((f1.p_notebook->*p_notebook)));
cout<<t1.int_test; // This gives 10
但是,如果我將f1.p_notebook的指針更改爲筆記本s2的另一個對象;
f1.p_notebook=&s2;
cout<<t1.int_test; // This gives 10
t1(t1.int_test)的引用成員不反映指針的變化。有人向我解釋爲什麼?或者我在這裏做錯了什麼。
對不起,但...什麼?這是一團糟。請製作乾淨整潔的小型測試用具。 –
我重新提交了一個更簡單的代碼! –
即使格式正確,那也不是很好的代碼。應該向你提供一些不理想的東西。 – ssube