上传者: 38571449
|
上传时间: 2022-06-23 21:25:16
|
文件大小: 111KB
|
文件类型: PDF
1、右值引用引入的背景 临时对象的产生和拷贝所带来的效率折损,一直是C++所为人诟病的问题。但是C++标准允许编译器对于临时对象的产生具有完全的自由度,从而发展出了CopyElision、RVO(包括NRVO)等编译器优化技术,它们可以防止某些情况下临时对象产生和拷贝。下面简单地介绍一下CopyElision、RVO,对此不感兴趣的可以直接跳过: (1)CopyElision CopyElision技术是为了防止某些不必要的临时对象产生和拷贝,例如: 代码如下: structA{ A(int){} A(constA&){} }; Aa=42; 理论上讲,上述Aa=42;语句将分三步操作:第