Tôi đang thực hiện một số sửa đổi C++ của mình và tôi đang xử lý quá tải toán tử vào phút, cụ thể là toán tử "=" (gán). Tôi đang tìm kiếm trực tuyến và bắt gặp nhiều chủ đề thảo luận về nó. Trong ghi chép của tôi, tôi có tất cả các ví dụ tôi đưa xuống như một cái gì đó giống nhưTại sao toán tử gán phải trả về một tham chiếu đến đối tượng?
class Foo
{
public:
int x;
int y;
void operator=(const Foo&);
};
void Foo::operator=(const Foo &rhs)
{
x = rhs.x;
y = rhs.y;
}
Trong tất cả các tài liệu tham khảo tôi thấy trên mạng, tôi nhận thấy rằng các nhà điều hành trả về một tham chiếu đến đối tượng nguồn. Tại sao cách chính xác để trả về một tham chiếu đến đối tượng trái ngược với không có gì cả?
Cách đúng là bất cứ cách nào thực hiện các ngữ nghĩa bạn muốn; cách _idiomatic_ chắc chắn trả về 'T &' ('Foo &' trong ví dụ của bạn). – ildjarn
@MooingDuck, tôi đoán tôi đã nói sai câu hỏi. Tôi đã đi trên giả định rằng các ghi chú của tôi là sai, nhưng muốn biết tại sao nhiều hơn là chính xác. – maccard
có thể trùng lặp của [toán tử gán trả về một tham chiếu đến * điều này trong C++] (http://stackoverflow.com/questions/5669813/assignment-operator-return-a-reference-to-this-in-c); cũng [Trả lại * điều này với một toán tử gán] (http://stackoverflow.com/questions/3248469/returning-this-with-an-assignment-operator) –