我有这段非常简单的测试代码:
std::string a = "A"
std::string b = "B"
std::cout << a + b << std::endl;
虽然它在 GNU g++ 中工作,但我担心将临时传递给 是否是可移植的a + b
,std::cout
例如,std::cout 是否保证接收正确的内存?
非常感谢!
它是安全的。临时文件在被 处理之前不会被销毁cout
。
有关更多详细信息,请参阅作为函数调用的一部分创建的临时对象何时被销毁?
是——a+b
创建一个临时std::string
对象,该对象被传递给std::cout
. 在创建它的完整表达式结束时,该临时对象将被销毁,但之前不会,因此它将保持有效直到表达式结束。
除此之外,临时对象与几乎任何其他std::string
对象几乎相同,因此它是临时对象这一事实与std::cout
.