什麼是C++中的複製省略和返回值最佳化?


複製省略也稱為複製遺漏。這是編譯器最佳化技術之一。它避免了不必要的物件複製。幾乎所有當前的編譯器都使用這種複製省略技術。

我們透過一個示例程式碼來看它是如何工作的。

示例程式碼

#include <iostream>
using namespace std;
class MyClass {
   public:
   MyClass(const char* str = "\0") { //default constructor
      cout << "Constructor called" << endl;
   }
   MyClass(const MyClass &my_cls) { //copy constructor
      cout << "Copy constructor called" << endl;
   }
};
main() {
   MyClass ob = "copy class object";
}

輸出

Constructor called

現在我們來討論為什麼不呼叫複製建構函式?

因此,當構造一個物件時,會生成一個臨時物件並將其複製到實際物件。因此,我們可以說在內部它看起來是這樣的。

MyClass ob = "copy class object";

將作為以下方式工作。

MyClass ob = MyClass("copy class object");

C++ 編譯器避免了此類開銷。

更新於:2019 年 7 月 30 日

231 次瀏覽

開啟你的職業

透過完成課程獲得認證

開始
廣告