Bốn nhà khai thác đề cập trong bài đăng ban đầu, =
, ()
, ->
và []
, thực sự phải được thực hiện như chức năng thành viên không tĩnh (bằng cách lần lượt là C++ 98 §13.5.3/1, §13.5.4/1, §13.5.5/1 và §13.5.6/1).
Lý do của Bjarne Stroustrup, như tôi nhớ lại từ các cuộc tranh luận trước đó về chủ đề, để giữ lại một số sự tỉnh táo trong ngôn ngữ, tức là có ít nhất một số thứ bạn có thể tin cậy. các toán tử thành viên cho các lớp hiện có.
Tôi không chắc chắn rằng tôi hoàn toàn đồng ý rằng hạn chế thực sự hữu ích với điều đó, nhưng.
EDIT: Tôi đã tham khảo ý kiến Bjarne Stroustrup về điều này (anh ấy luôn hữu ích) nhưng dường như sự mâu thuẫn rõ ràng của quy tắc không nhiều hơn trường hợp tai nạn lịch sử đông lạnh. Ông lưu ý rằng "Bây giờ nó trông tệ hơn bây giờ bởi vì quy tắc của chúng tôi về giá trị và tham chiếu đã thay đổi kể từ khi các quy tắc quá tải được xây dựng. Tôi đã cố gắng xem xét vấn đề này một lần nữa vài năm trước, nhưng đã hết thời gian trước khi sản xuất đề xuất hoàn chỉnh. "
Cheers & hth,
PS:. "Các thiết kế và Sự phát triển của C++" Cuốn sách là rất tốt cho các loại hình câu hỏi, nhưng tiếc là tôi không có nó.
Nguồn
2010-10-14 22:40:02
Tôi khá chắc chắn '-> *' có thể được thực hiện như một hàm thành viên. –
@James: Bạn đã đúng. @Armen: Có lẽ chỉ là tầm nhìn ngắn. – GManNickG
@James. Cuốn sách C + + trong một nutshell nói khác ... –