Đây chỉ là một câu hỏi nhanh chóng để hiểu một cách chính xác những gì sẽ xảy ra khi bạn tạo ra một lớp với một constructor như thế này:trình biên dịch tạo nhà xây dựng
class A
{
public:
A() {}
};
Tôi biết rằng không có constructor mặc định được tạo ra vì nó đã được xác định nhưng các hàm tạo bản sao và gán được tạo bởi trình biên dịch hoặc nói cách khác là tôi cần phải khai báo một hàm tạo bản sao riêng và toán tử gán riêng để ngăn điều này xảy ra?
class A
{
private:
// needed to prevent automatic generation?
A(const A&);
A& operator=(const A&);
public:
A() {}
};
Trên thực tế, mặc dù nếu bạn đang sử dụng này để ngăn chặn sao chép/chuyển nhượng, kiểm tra [tăng :: noncopyable] (http: // www .boost.org/doc/libs/1_55_0/libs/utility/utility.htm # Class_noncopyable). (Bạn có thể tách ra lớp đơn giản này hoặc viết của riêng bạn và tái sử dụng nó bất cứ nơi nào bạn muốn.) – TypeIA