Duplicar posibles:
why private value of the obj can be changed by class instance?== sobrecarga puede acceder a miembros privados de argumento
en cuenta la (parcial) siguiente código:
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;
}
El código se compila y los resultados parecen apropiados Sin embargo, en la parte if
de la implementación de sobrecarga del operador, estamos accediendo directamente al miembro privado de su argumento: const Group& g
, pero ¿no es válido dicho acceso?
¿Qué pasa con 'g.id retorno == this-> id'? – sbi
En una nota lateral, creo que el nombre de usuario "WeaklyTyped" coincide con esta pregunta muy bien. – datenwolf
@sbi - tiene un 'this->' innecesario. –