DEV/C++

[OOP] c++ 에서의 상속에 관한 키워드

ssapo 2015. 2. 18. 02:26
반응형

 C++ 에서는 상속을 하려는 클래스 앞에 액세스 한정자에 대한 명시를 해줘야 하는데,

이부분에 대해서 모르는 사람들이 굉장히 많다는 것을 느꼈다. ( 내 주변만 그런가...? )

일단은 C++에서만 나오는 개념이기도 하고, 알고 있어도 설계단계에서나 
중요한 키워드이기 때문에 잘 모르게 되고 그러다 보니 알고 있다가도 까먹어서 모르는 사람도 많은거 같다.



 
이 코드에서 2번은 컴파일 에러를 뿜는다. 

왜? 상속 키워드에서 public 한정자는 해당 부모 클래스의 public 한정자에 있는 멤버변수, 
멤버함수들을, 모두 public으로 받겠다 하는 뜻이다. 

그렇다면 private 한정자는? 부모 클래스의 public 한정자와, 
protected 한정자로 설정 되어 있는 모든 변수와 함수들을 private으로 받게 된다. 
그러니, 당연히 private 한정자로 된 getX()에 대한 assign은 불가능하게 되는 것이다. 

왜 이렇게 제한을 걸고 불편하게 하는 것인가? 하는 문제는 설계자의 철학에 관한 문제인데, 
상속하는 클래스가 부모의 인터페이스를 통해서 로직을 설계하고 새로운 인터페이스를 제공해야 할때, 

Wrapper class(Adapter Pattern)의 구현방법중에 이런 방법이 있다는 것을 알고 있으면,
오픈 소스를 이해할 때에 큰 도움이 된다.




반응형