cpp - Serbipunk/notes GitHub Wiki
Copy elision
Omits copy and move(since C++11) constructors, resulting in zero-copy pass-by-value semantics.
省略拷贝构造函数 和 移动构造函数,造成在pass-by-value (相对pass-by-reference) 语境下的不拷贝。
https://en.cppreference.com/w/cpp/language/copy_elision
https://cloud.tencent.com/developer/article/1979760
return statement:
NRVO
MyClass createObject() {
MyClass obj; // 局部变量
return obj; // 直接构造在目标位置,省略拷贝/移动
}
URVO
In C++17 and later, URVO is mandatory and no longer considered a form of copy elision.
MyClass createObject() {
return MyClass(); // 临时对象直接构造在目标位置
}
throw VO
void someFunction() { MyClass obj; throw obj; // 可以省略拷贝/移动 }
这文档看的很烦。。。