Hoàn toàn hợp pháp. Nhưng khi bạn khai báo operator=
như vậy, bạn sẽ không thể thực hiện "chuỗi chuyển nhượng":
item a(X);
item b;
item c;
c = b = a;
Tham chiếu cho phép sửa đổi giá trị trả lại. Vì operator=
được đánh giá từ phải sang trái, mức sử dụng tôi đã hiển thị cho bạn đang hoạt động.
EDIT Ngoài ra, như những người khác đã đề cập, giá trị trả về thường được sử dụng trong các biểu thức như while (a = cin.get()) != 'q')
. Nhưng bạn cũng có thể khai báo toán tử như A operator=(const A&)
(trả về bản sao) hoặc const A& operator(const A&)
(trả về tham chiếu const). Quan điểm của tôi là: toán tử này có thể trả về mọi thứ, nhưng cách thành ngữ là trả về tham chiếu không const cho chính nó.
và quan trọng đây là những gì được xây dựng trong các loại –