c++临时对象问题

标签 c++ temporary-objects

这两个函数之间创建的临时对象的数量有区别吗?

string foo1() {
    return "";
} 

string foo2() {
    string s = "";
    return s;
}

这是一道作业题,所以请假设没有编译器优化。

最佳答案

没有- 只创建了一个临时。函数堆栈上的对象不是临时对象,它是左值。字符串文字也是一个左值。两者涉及完全相同的过程 - 返回从左值构造的字符串。

关于c++临时对象问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6322785/

相关文章:

c++ - 乒乓物理题

c++ - 解压可变模板参数

c++ - 尝试在 C++ 中进行递归调用

c++ - pIter != cont.end() 在 for 循环中的性能

c++ - 使用旧的 C 库调用临时对象的方法会导致编译器错误

C++ 多重继承和纯函数

c++ - 函数模板特化

c++ - 为什么非常量引用参数可以绑定(bind)到临时对象?

c++ - 引用临时与指向临时及其生命周期的指针

c++ - 强制清理临时变量