Tengo el siguiente código:Con un modificador privado, ¿por qué se puede acceder directamente al miembro de otros objetos?
class A
{
private:
int x;
public:
A()
{
x = 90;
}
A(A a1, A a2)
{
a1.x = 10;
a2.x = 20;
}
int getX()
{
return this->x;
}
};
Yo sé que el código podría ser extraño, pero no entiendo por qué a1
y a2
puede acceder a los datos privados miembro de x
?
'private' funciona únicamente a nivel de clase. 'protected' [does not] (http://stackoverflow.com/questions/3247671/accessing-protected-members-in-a-derived-class-c) – MSalters
@MSalters: Claro que sí. Los miembros de una clase todavía obtienen acceso mejorado a otros objetos de ese tipo de clase, incluida la capacidad de acceder a miembros protegidos dentro de subobjetos base (de otros objetos del tipo de clase donde está el código). –
Los especificadores de acceso en C++ regulan el acceso a _names_, no a los objetos. En realidad, es posible acceder a miembros privados de diferentes clases si puede encontrar una forma legal de referirse a ellos. – bames53