让我们看一下这两个函数:
std::string get_string()
{
std::string ret_value;
// Calculate ret_value ...
return ret_value;
}
void process_c_string(const char* s)
{
std::cout << s << endl;
}
这里有两个可能的调用process_c_string
with 参数返回的get_string
。
没有绑定 const 对返回对象的引用
get_string
。process_c_string(get_string().c_str());
使用绑定 const 引用返回的
get_string
.const std::string& tmp_str = get_string(); process_c_string(tmp_str.c_str());
我知道第二种方法是有效的,但是第一种方法呢,标准对这种情况有什么看法?返回的临时对象会不会因为不存在而在完成get_string
前被删除?process_c_str
const reference
注意:这两个版本在 MSVC 中都可以。