什麼是複製最佳化和返回值最佳化?


複製最佳化是大多數編譯器實施的一種最佳化,可以防止在某些情況下出現額外的(可能很昂貴的)複製。因此,如果你有一些正在建立不使用的物件或沒有副作用的程式碼,

示例

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

這意味著建立的物件比你預期的要少,因此你也不能依賴於呼叫特定數量的建構函式和解構函式。你不應該在複製/移動建構函式或解構函式中編寫關鍵邏輯,因為你不能依賴於它們的呼叫。

更新於: 2020 年 2 月 11 日

362 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.