可能な重複のプライベートメンバーにアクセスすることができます。
why private value of the obj can be changed by class instance?なぜ==のオーバーロードは、引数
は、以下の(部分)コード考えてみましょう:
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;
}
コードをコンパイルして、結果は正しいようです。しかし、演算子オーバーロードの実装の一部であるif
では、引数-const Group& g
のプライベートメンバーに直接アクセスしていますが、そのようなアクセスは無効ではありませんか?
? – sbi
補足として、ユーザー名「WeaklyTyped」はこの質問に非常によく似ていると思います。 – datenwolf
@sbi - 不要な 'this->'があります。 –