C++에서 private 한정자

Memo 2011. 1. 7. 13:10

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 변수에 접근하는 수 밖에 없다.

AND