我有一个相当基本的 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?
}
我知道stringstream
当函数返回时对象将超出范围,但这不会使构造的字符串也无效吗?
如果我将返回类型更改为const char *
并返回,会发生什么ss.str().c_str()
?
上面的代码似乎可以工作,但我怀疑这只是因为包含“临时”对象的内存在我使用它时还没有被其他东西覆盖?
我不得不承认,一般来说,我在这种情况下很困惑。如果有人可以向我解释这整个“临时对象”的事情(或者只是指出我正确的方向),我将不胜感激。