C 函式返回常引用給常引用初始化的問題,大家可不可以幫幫我?

時間 2021-09-09 14:23:03

1樓:黃亮anthony

std::string get(std::string t) {return t;

就能滿足這裡的要求。

謹慎所有返回引用函式

2樓:記憶體塊生命週期

不說人話:字串字面值隱式構造了string物件,get的引數引用了該string物件。但是該物件產生於get函式執行週期內,且由該週期內的棧持有,那麼其生命週期不會超過該棧的本次執行週期。

說人話:string的建構函式拷貝構造了自動變數str_temp,並被get函式的引數引用。get函式退出後,get函式內的自動變數也被析構。

3樓:C十十20年

問題在於main中的引用變數,引用到同一位置的物件,儘管構造了8個臨時常量物件;然後使用這8個臨時常量物件,通過移動語義構造匿名變數,被main的8個引用變數引用。關鍵要注意的是:常量物件的生命期為當前語句,故main第一條語句結束時,第乙個常量物件就執行析構。

所以main第二條語句執行前,第乙個常量物件己析構,第二個常量物件還是在第乙個常量的位置構造,因此main的8個引用變數都引用了同一位置,故最終的列印結果一樣。

c 臨時物件初始化指標和引用?

楚軒 1.因為你開啟了VS2013的非標準擴充套件.你把警告等級W4開了就知道了.這是微軟搞得 2.一樣是非標準擴充套件nonstandard extension used class rvalue used as lvalue 邱昊宇 出現這種疑問時,可以嘗試換個編譯器 比如 g main.cpp...

c 有沒有優雅的返回空引用方式?

可以搞乙個std pair嗎?根據bool判斷V是否是有效的,為false時,second為V 的預設構造。感覺這樣開銷有點大 更新 用std optional也可以 stay 看看stl是怎麼做的 std map at cppreference.com 返回到擁有等於 key 的關鍵的元素被對映值...

C 返回類時,返回引用還是構造乙個新的例項,什麼時候返回const?

Sunchy321 1 把print的形參改成A const 我不能理解為什麼要改成右值引用,如果有人能向我解釋清楚我非常感謝。A 能接受A const大概說明了什麼。2 我認為,是否返回引用其實取決於返回值是不是乙個新的物件。當然,operator 有其準則,也就是模仿內建運算子的行為 當然,不可...