Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Copy elision (bỏ qua sao chép) trong C++


Copy Elision (còn gọi Copy Omission) là kỹ thuật tối ưu hóa trình biên dịch tránh sao chép đối tượng không cần thiết. Hầu hết trình biên dịch hiện đại đều áp dụng.

Ví dụ

#include <iostream>
using namespace std;

class MyClass {
public:
    MyClass(const char* str = "\0") { // constructor mặc định
        cout << "Constructor called" << endl;
    }
    MyClass(const MyClass &my_cls) { // copy constructor
        cout << "Copy constructor called" << endl;
    }
};

int main() {
    MyClass ob = "copy class object";
}

Kết quả

Constructor called

Tại sao copy constructor không được gọi? Khi khởi tạo đối tượng, một đối tượng tạm thời được tạo và sao chép. Nội bộ: MyClass ob = MyClass("copy class object");. Trình biên dịch C++ loại bỏ chi phí này.