在參考中存儲對象的返回值是否有效?在參考C++中存儲函數的返回值
class A { ... };
A myFunction()
{
A myObject;
return myObject;
} //myObject goes out of scope here
void mySecondFunction()
{
A& mySecondObject = myFunction();
}
是否有可能做到這一點,以避免將myObject複製到mySecondObject? myObject不再需要,應該與mySecondObject完全相同,因此從理論上講,只需將對象的所有權從一個對象傳遞給另一個對象就可以更快。 (這也可以使用提升共享指針,但它具有共享指針的開銷。)
在此先感謝。
你碰巧知道爲什麼這是不允許的? – Mehrdad 2012-02-17 04:11:00
林不知道,但我猜測,原因是,允許非const引用意味着編譯器將需要確定何時重新分配引用。我認爲這通常被認爲是動態作用域分析的一部分,並未在C++標準中使用。另一方面,在const情況下,只需要確定參考的靜態生命週期。這種分析可能已經在其他情況下需要,因此被認爲是可以接受的。 – 2013-08-05 14:35:20
人們也可以注意到,這是一個非常簡單的指針跟蹤功能,可以想象一個更高級的系統。但總的來說,我相信C++想要避免這個問題,並將其委託給程序員。這就是智能指針。 – 2013-08-05 14:37:57