thể trùng lặp:
why private value of the obj can be changed by class instance?Tại sao == quá tải có thể truy cập các thành viên tư nhân của các đối số
Hãy xem xét những điều sau đây (một phần) mã:
class Group {
private:
int id;
public:
void set_id(int);
int get_id();
bool operator==(const Group&);
};
bool Group::operator==(const Group& g) {
if(g.id == this->id) { /* id is private? */
return true;
}
return false;
}
mã biên dịch và kết quả có vẻ phù hợp. Tuy nhiên, trong phần if
của việc thực thi quá tải toán tử, chúng tôi đang truy cập trực tiếp vào thành viên riêng tư của đối số của nó - const Group& g
, nhưng không phải là truy cập không hợp lệ?
Có gì sai với 'trở g.id == this-> id'? – sbi
Trên một mặt lưu ý, tôi nghĩ tên người dùng "WeaklyTyped" khớp với câu hỏi này rất độc đáo. – datenwolf
@sbi - nó có một 'this-> 'không cần thiết. –