这两个函数之间创建的临时对象的数量有区别吗?
string foo1() {
return "";
}
string foo2() {
string s = "";
return s;
}
这是一道作业题,所以请假设没有编译器优化。
最佳答案
没有- 只创建了一个临时。函数堆栈上的对象不是临时对象,它是左值。字符串文字也是一个左值。两者涉及完全相同的过程 - 返回从左值构造的字符串。
关于c++临时对象问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6322785/