Meh*_*dad 13 c++ visual-c++ return-value-optimization
Visual C++不执行返回值优化吗?
#include <cstdio>
struct Foo { ~Foo() { printf("Destructing...\n"); } };
Foo foo() { return Foo(); }
int main() { foo(); }
Run Code Online (Sandbox Code Playgroud)
我编译并运行它:
cl /O2 test.cpp
test.exe
Run Code Online (Sandbox Code Playgroud)
它打印:
破坏...
破坏......
为什么不执行RVO?
Jer*_*fin 15
当我测试时:
#include <iostream>
struct Foo {
Foo(Foo const &r) { std::cout << "Copying...\n"; }
~Foo() { std::cout << "Destructing...\n"; }
Foo() {}
};
Foo foo() { return Foo(); }
int main() { Foo f = foo(); }
Run Code Online (Sandbox Code Playgroud)
...我得到的输出是:
Destructing...
Run Code Online (Sandbox Code Playgroud)
没有复制构造函数的调用,只有一个析构函数.
| 归档时间: |
|
| 查看次数: |
1380 次 |
| 最近记录: |