C++에서 private 한정자는 class 단위이다. 객체 단위가 아니다.
예를 들면,
#include <iostream>
using namespace std;
class A {
private:
int a;
public:
void b()
{
A test;
test.a = 1;
cout << test.a << endl;
}
};
void main()
{
A a;
a.b();
}
a라는 객체에서 test라는 객체의 private 변수에 접근이 가능하다.
따라서, private 한정자는 class 단위이다.
이와 관련하여, 상속받은 상위 클래스의 private 한정자들은
하위 클래스가 상속을 받았더라도 다른 클래스이므로 private 변수에 접근할 수 없다.
상위 클래스에서 private가 아닌 protected 한정자를 사용하거나
하위 클래스에서 상위 클래스의 생성자를 이용하여 private 변수에 접근하는 수 밖에 없다.