Nếu tôi xác định một toán tử gán riêng, trong đó có một chữ ký khác với toán tử gán mặc định thường được tạo ra:Khi nào toán tử gán mặc định C++ trở thành không thể truy cập?
struct B;
struct A {
void operator = (const B& b) {
// assign something
}
};
làm toán tử gán mặc định, trong trường hợp này operator = (A&)
(hoặc tương tự, chính xác cho tôi nếu sai) trở thành không xác định/không thể truy cập?
AFAIK điều này đúng đối với hàm tạo mặc định, không tồn tại, nếu chúng ta định nghĩa một hàm tạo khác. Nhưng tôi thực sự không chắc chắn nếu điều này là trường hợp cho mặc định "ma thuật" khác.
Lý do tôi hỏi: Tôi muốn tránh rằng trình tạo bản sao mặc định vô tình được gọi qua chuyển đổi loại ngầm định. Nếu nó không tồn tại, nó không bao giờ có thể xảy ra.
Cảm ơn bạn đã tham khảo tiêu chuẩn! Điều đó thực sự nói điều gì đó nhiều hơn các ví dụ của tôi. – xtofl
Bạn nói đúng. Tôi sẽ xóa câu trả lời của tôi. –
@Neil, bạn tự hỏi về việc sử dụng = mặc định có thể là gì. Một là để được rõ ràng trong những gì có sẵn, khác là để thay đổi khả năng tiếp cận một phần ba là nó cho phép thực hiện việc thực hiện không inline trong khi đảm bảo rằng sự tiến hóa của lớp không phá vỡ nó. Một lý do khác là tính năng này rộng hơn phạm vi so với nhiệm vụ và không có động cơ để tạo ngoại lệ ngay cả khi nó không được sử dụng. – AProgrammer