-
33. 상속된 이름을 숨기는 것은 피하자.프로그래밍/Effective c++ 2016. 3. 10. 16:40class Base {private:int x;public:virtual void mf1() = 0;virtual void mf1(int i = 0) ;};class Derived: public Base{public:virtual void mf1();};이와같이 선언하면, Derived클래스에서 mf1(2)를 호출해도 Derived의 mf1이라는 이름이 Base의 그것을 덮어버렸기 때문에 더이상 Derived의 범위에서 mf1(int)함수는 존재하지 않는다.이런 경우다음과 같이 해결한다.class Derived: public Base{public:using Base::mf1;virtual void mf1();};Base클래스를 private로 상속한 경우에는 using을 쓸 수 없는데, 다음과 같이 해결하기도 한다.class Derived: private Base {public:virtual void mf1(){ Base::mf1(); }};
'프로그래밍 > Effective c++' 카테고리의 다른 글
35. 가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자. (0) 2016.03.10 34. 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자. (0) 2016.03.10 32. public 상속 모형은 반드시 "is-a"를 따르도록 하자. (0) 2016.03.10 31. (incomplete) (0) 2016.03.10 30. (incomplete) (0) 2016.03.10