Lấy cảm hứng từ this question.Tại sao tôi phải tạo bản sao của nhà xây dựng và toán tử gán riêng và được triển khai trong C++?
Thông thường lý do để làm cho nhà tạo bản sao và nhà điều hành gán private
là make the class non-copyable để các đối tượng chỉ có thể được tạo và hủy, nhưng không được sao chép - phần lớn thời gian là vì sao chép chúng sẽ không có ý nghĩa. Trong những trường hợp như vậy, hàm tạo bản sao và toán tử gán đều được thực hiện private
và không được triển khai - nếu lớp đó không thể sao chép được thì không ai nên sao chép.
Có trường hợp nào khi người tạo bản sao và nhà điều hành chuyển nhượng cần phải là private
và thực hiện có ý nghĩa cùng một lúc?
đọc các chức năng đã xóa của C++ 0x, là cú pháp đường cho loại điều này bằng cách sử dụng '= delete' thay vì nhảy qua các vòng lặp. – rubenvb
Làm thế nào đây không phải là một sự lừa dối của câu hỏi khác? Cái kia không chỉ định * chỉ * các hàm tạo riêng với các hiện thực, nhưng ít nhất một câu trả lời (http://stackoverflow.com/questions/6811037/whats-the-use-of-the-private-copy-constructor-in- c/6811507 # 6811507) liên quan đến điều đó. –
@Steve Jessop: Vấn đề là lý do số một để họ có riêng tư là ngăn chặn sao chép hoàn toàn và sau đó họ không được thực hiện và đó là điều mà hầu hết mọi người (tôi cũng nghĩ) khi họ được hỏi về điều này. Vì tôi đặc biệt quan tâm đến kịch bản "riêng tư + được triển khai", tôi phải đặt câu hỏi này và nhấn mạnh cụ thể. – sharptooth