這是我相信的:得到返回的返回類型是對象的引用嗎?
當一個函數返回它時,創建一個新的臨時對象副本,並且這個臨時對象保留在內存中,從它被調用的地方開始。
當函數返回該對象本身返回的引用時。這意味着該對象不應該是本地的。
所以,當我這樣做:
MyStruct & ReferenceReturn(MyStruct cl)
{
return cl;
}
在main()我做
MyStruct d("notmyname"),g("myname");
d = ReferenceReturn(g);
cout << d.name;
cout << ReferenceReturn(g).name;
打印不需要的兩個。
返回什麼? :引用g的本地拷貝,即一旦函數完成就被銷燬,或者在語句結束後對臨時對象的引用被銷燬。但是,既然溫度已經被創造出來,它就會以正確的方式超越。所以我相信它是返回的傳遞值的localcopy的參考。
但是,只要我在結構中進行析構函數,它就完美了,具有以下代碼和特定的輸出。
~MyStruct()
{
cout << name << " is destroying";
}
輸出:
myname is destroying
myname
myname
myname is destroying
....
此輸出顯示只有一個對象是爲每一個呼叫建立。 (有兩個電話)
但是,爲什麼它不工作沒有析構函數?
感謝
結果未定義爲這種情況? –