我有一个相当基本的C++问题,考虑一个函数,它接受一些输入参数并std::string从这些参数中创建一个,如下所示:
std::string constructString( int some_parameter ) {
std::stringstream ss;
// Construct a string (arbitrarily complex)
ss << "Some parameter is " << some_parameter << " right now";
return ss.str(); //Am I not returning a temporary object here?
}
Run Code Online (Sandbox Code Playgroud)
我知道stringstream-object在函数返回时会超出范围,但是不会使构造的字符串失效吗?
如果我将返回类型更改为const char *并返回,会发生什么ss.str().c_str()?
像上面这样的代码似乎有效,但我怀疑这只是因为当我使用它时,包含'临时'对象的内存还没有被其他东西覆盖?
我不得不承认,在这种情况下我总是很困惑,如果有人可以向我解释这整个"临时对象"(或者只是指向正确的方向),我会很感激.
thx提前