Một điều phổ biến tôi thấy mình làm là làm cho "gần như mặc định" nhà xây dựng bản sao và các nhà khai thác chuyển nhượng. Đó là, tôi thấy mình trong các tình huống mà trình biên dịch cung cấp các toán tử gán và sao chép sẽ làm việc cho hầu hết các thành viên dữ liệu, nhưng có một thành viên dữ liệu cụ thể cần phải được xử lý khác nhau. Điều này có nghĩa rằng tôi phải tạo một cách rõ ràng một toán tử xây dựng/gán bản sao, bao gồm liệt kê rõ ràng tất cả các thành viên dữ liệu có ngữ nghĩa sao chép đơn giản. Điều này có thể gây khó chịu cho các lớp, nơi có một số lượng hợp lý các thành viên dữ liệu, hoặc sau này khi các biến thành viên được thêm vào nhưng không được thêm vào toán tử tạo bản sao/gán."Hầu như mặc định" constructor sao chép (& nhà điều hành chuyển nhượng) trong C + +
Có cách nào để báo cho trình biên dịch C++ rằng một nhà khai thác/khai thác bản sao được khai báo rõ ràng sẽ hoạt động giống như một trình ẩn, ngoại trừ một số mã bổ sung chạy sau đó? (Và là một cú pháp C++ 98 tương thích, hoặc không cần hỗ trợ C++ 11 hoặc C++ 14?)
Triển khai trình bao bọc RAII thích hợp cho một thành viên dữ liệu đó, khi đó các hàm tạo mặc định sẽ hoạt động cho mọi thứ. –