什麼是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++ 編譯器避免了此類開銷。
廣告