Ví dụ: tôi muốn khai báo lớp nhưng tôi muốn khách hàng không thể sử dụng hàm tạo bản sao (hoặc sao chép toán tử gán)Sự khác biệt giữa khai báo một hàm tạo riêng và = delete là gì?
Cả hai điều sau đây đều không cho phép sử dụng hàm tạo bản sao:
1.
class Track
{
public:
Track(){};
~Track(){};
private:
Track(const Track&){};
};
2.
class Track
{
public:
Track(){};
~Track(){};
Track(const Track&)=delete;
};
Một trong những cách này "chính xác hơn" khác hay bằng nhau? Có tác dụng phụ nào không?
//Does not compile with both the above ways
int main()
{
Track l;
Track p(l);
}
Điều này có biên dịch 'Track (const Track &) = delete;' ??? –
@EdHeal có, nó có. g ++ 4.7 –
Không thấy việc sử dụng 'xóa' trước đó. Tiện ích mở rộng ngôn ngữ? Nếu có, thì điều đầu tiên chắc chắn là "chính xác hơn" – kotlomoy