什么是复制优化和返回值优化?
复制优化是大多数编译器实施的一种优化,可以防止在某些情况下出现额外的(可能很昂贵的)复制。因此,如果你有一些正在创建不使用的对象或没有副作用的代码,
示例
struct MyStruct {
MyStruct() {}
MyStruct(const MyStruct&) {
std::cout << "Copied.\n";
}
};
MyStruct f() {
return MyStruct();
}
int main() {
std::cout << "Main\n";
MyStruct obj = f();
}输出
根据编译器和设置,你可以获得以下任何输出 −
Main Main Copied Copied Main Copied
这意味着创建的对象比你预期的要少,因此你也不能依赖于调用特定数量的构造函数和析构函数。你不应该在拷贝/移动构造函数或析构函数中编写关键逻辑,因为你不能依赖于它们的调用。
广告
数据结构
网络通信
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP