假設一個函數的簽名存儲返回值作爲常量引用與作爲一種價值
std::string GetString();
,它通過返回值一個新的字符串。現在給出下面的代碼:
// (a) Store the return value to a const reference.
const std::string& my_string = GetString();
// (b) Store the return value to a (const) value.
const std::string my_string = GetString();
我是正確理解(a)和(b)是,從一個C++ 11編譯器的點,相同的?如果是這樣,對風格的選擇有一個大致的共識嗎?
如果它們是相同的,我會感到驚訝。在情況b中,你實際上有一個std :: string。如果a,你有一個字符串的引用,但沒有實際的std :: string存儲。它應該會崩潰,甚至可能無法編譯。 –
@ChrisBecke [This Q&A](http://stackoverflow.com/questions/2784262/does-a-const-reference-prolong-the-life-of--temporary)解釋了情況(a)。 –
如何......意外。 –