[C++] 오버로딩 된 함수의 상속, using 선언


기본 클래스와 똑같은 이름의 멤버 함수를

파생 클래스에서 정의할 경우(비가상으로)

바깥쪽 유효범위에 있는 이름을 가리는

특성으로 인해 기본 클래스의 함수가 숨겨져 버린다.

( 참고로 비가상 함수를 파생클래스에서 재정의

하는 일은 절대로 해서는 안된다. )




하지만 때때로 가상 함수의 이름도 가려져 버리는

경우가 있는데, 기본 클래스로부터 오버로드

버전을 상속시키는 경우이다. 컴파일러는

기본 클래스의 오버로드 버전 상속을 막고 있는데,

public 상속을 쓰면서 이러한 상속을 하지 못하는 것은

엄연히 is-a 관계 위반이라고 할 수있다. 방법이 없을까?




비가상 함수인지 가상 함수인지 여부에

상관없이 이름이 가려진다.





파생 클래스 내에 using 선은을 해줌으로써

가려진 이름을 끄집어 냈다.


기본 클래스로부터 상속을 받으려고 하는데,

오버로드된 함수가 그 클래스에 들어 있고

이 함수 중 몇개만 재정의하고 싶다면,

각 이름에 대해 using 선언을 붙여 주어야 한다.


이렇게 하지 않으면 이름이 가려져 버린다.




POINT!!

가려진 이름을 다시 볼 수 있게 하는 방법으로,

using 선언을 쓸 수 있다.


+ Recent posts