Tôi đã đọc the C++ FAQ. Ở đó tôi đã tìm thấy một điểm trong hướng dẫn sử dụng toán tử quá tải:Tầm quan trọng của toán tử quá tải -() là hàm miễn phí và không phải là hàm thành viên?
Nếu bạn cung cấp toán tử xây dựng, chúng sẽ cho phép quảng bá toán hạng bên trái (ít nhất là trong trường hợp lớp đó có một tham số đơn không được đánh dấu bằng từ khóa rõ ràng). Ví dụ, nếu phân lớp của bạn hỗ trợ khuyến mãi từ int đến Fraction (thông qua ctor không rõ ràng Fraction :: Fraction (int)), và nếu bạn cho phép x - y cho hai đối tượng Fraction, bạn cũng nên cho phép 42 - y. Trong thực tế, điều đó đơn giản có nghĩa là toán tử() của bạn không phải là một hàm thành viên của Phân số. Thông thường bạn sẽ làm cho nó trở thành một người bạn, nếu không có lý do nào khác hơn là ép nó vào công chúng: một phần của lớp, nhưng ngay cả khi nó không phải là một người bạn, nó không phải là một thành viên.
Tại sao tác giả viết rằng toán tử-() không nên là thành viên?
Hậu quả xấu nếu tôi đặt toán tử-() làm hàm thành viên và hậu quả khác là gì?
Lưu ý rằng tiêu đề không đúng: 'toán tử()' không thể được triển khai như một hàm miễn phí. Hầu hết các nhà khai thác có thể, nhưng không phải tất cả. Trích dẫn đề cập đến toán tử 'operator-', chứ không phải 'operator()' –
có thể trùng lặp của [Toán tử << nên được thực hiện như một người bạn hay một hàm thành viên?] (Http://stackoverflow.com/questions/236801/should -operator-be-implement-as-a-friend-or-as-a-thành viên-chức năng) –