나는이 다음 코드 : 개인 한정자를 사용하면 왜 다른 개체의 멤버에 직접 액세스 할 수 있습니까?
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;
}
};
내가 그 코드가 이상한 수 있습니다 알고 있지만
a1
및
a2
개인 데이터 멤버
x
에 액세스 할 수 있습니다 왜 이해가 안 돼요?
'private'은 순전히 클래스 수준에서 작동합니다. 'protected' [does not] (http://stackoverflow.com/questions/3247671/accessing-protected-members-in-a-derived-class-c) – MSalters
@MSalters : 물론 그렇습니다. 클래스의 멤버는 기본 하위 객체 (코드가있는 클래스 유형의 다른 객체) 내의 보호 된 멤버에 액세스 할 수있는 기능을 포함하여 해당 클래스 유형의 다른 객체에 대한 향상된 액세스 권한을 계속 얻습니다. –
C++의 액세스 지정자는 객체가 아닌 _names_에 대한 액세스를 제어합니다. 합법적 인 방법으로 다른 클래스를 참조 할 수 있다면 실제로 다른 클래스의 개인 멤버에 액세스 할 수 있습니다. – bames53