-3
如果我使用下面的代碼那麼爲什麼輸出中是在相同下列兩種情況:在上面的代碼爲什麼「b.print()」輸出在屏幕上的相同數據類對象的C++引用返回 - 爲什麼不工作?
class Test
{
public:
int data;
Test() { data = 9; }
Test& myfunction();
void print() { cout << data<<endl; }
};
Test m;
Test& Test::myfunction()
{
return m;
};
int main()
{
Test b;
Test a;
b=a.myfunction();
b.print();
m.data=7;
b.print();
return 0;
}
我甲肝改變了即使經過'm'的'數據'...?
'b'是對'm'的引用。所以,如果我改變的「m」「數據」的值時,「B」「數據」的值也應自動改變...的上面的代碼
輸出是:
9 // 爲什麼不是7?
這不是留言板,所以請避免重複發帖。使用註釋和編輯來改變原來的問題。 – dasblinkenlight
就回答你的問題而言,'b = a.myfunction();'會複製由引用返回的'm',所以'b'是一個獨立於'a'的獨立對象。切換到'Test&b(a.myfunction());'得到你想要的效果。 – dasblinkenlight
@dasblinkenlight在第一個問題中已經說過,OP看不懂 – Paranaix