【发布时间】:2015-11-03 06:11:43
【问题描述】:
假设一个函数有签名
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();
从 C++11 编译器的角度来看,我是否正确理解 (a) 和 (b) 是相同的?如果有,在风格的选择上是否有一个大致的共识?
【问题讨论】:
-
如果它们相同,我会感到惊讶。在情况 b 中,您实际上有一个 std::string。在情况 a 中,您有对字符串的引用,但没有实际的 std::string 存储。它应该会崩溃,甚至可能无法编译。
-
@ChrisBecke This Q&A 解释案例 (a)。
标签: c++ const-reference