Và tương tự, trình tạo bản sao mặc định có gọi hàm tạo bản sao trên tất cả các thành viên không? Ví dụ: nếu một lớp học có thành viên không phải POD như vậy:Nhà điều hành cuộc gọi gán mặc định = trên tất cả các thành viên?
class A
{
std::string str;
};
... trình tạo bản sao và tác nhân gán biên dịch mặc định có hoạt động chính xác không? Họ sẽ gọi hàm tạo bản sao của chuỗi và operator=
hoặc họ sẽ tạo bản sao bit của biến thành viên str
?
Nói cách khác, không có thành viên std::string
có nghĩa là lớp này cần người tạo bản sao do người dùng triển khai và nhà điều hành gán không?
"Có, trình biên dịch được tạo bởi trình biên dịch sẽ hoạt động chính xác". - ngay cả đối với các lớp học với các thành viên const? –
@spin_eight sau đó bản sao hoặc bài tập sẽ không biên dịch được. –
@LuchianGrigore: Trên thực tế, một bản sao sẽ biên dịch. Nhiệm vụ sẽ không rõ ràng. –