我有疑問返回std :: string作爲const引用。返回std ::字符串作爲const引用
class sample
{
public:
std::string mString;
void Set(const std::string& s)
{
mString = s;
}
std::string Get()
{
return mString;
}
};
在Set函數中,我將std :: string作爲const引用傳遞給const,因爲它的值在函數內部沒有改變。
而在獲取函數,其實我很困惑這裏。返回std :: string作爲值更有意義。但我不確定,通過傳遞字符串作爲const引用有什麼好處。通過迴避字符串作爲參考會增加執行速度,我認爲所以,但我不確定。但是將它返回爲const會爲此帶來什麼好處?
「如果Get()更改爲通過值而不是const引用返回,則此代碼當然會生成懸掛指針。」 - 不,它不會,它會停止編譯(「不能取得臨時地址」)。這比編譯更好,但與UB相比。實際上它可以*由於擴展而編譯,但我不認爲這是一個常見的擴展,並且標準仍然要求診斷,所以至少應該警告用戶。 –
@SteveJessop謝謝,我已經糾正了答案。 – Angew