Effective C++ Item 33 ― 2009年08月17日 22時27分12秒
- 派生クラスで使われた名前は基底クラスの同じ名前を隠す。パブリック継承の時は注意が必要になる。
- 隠された名前を有効にするには using を用いる。
名前解決には関数名だけで行なわれる。その為、異なった引数を取る同じ関数名が派生関数で定義されると、基底クラスの名前の同じ全ての関数は隠されてしまう。
以下の例では mf1(int)
と mf3(couble)
が派生クラスに隠蔽されてしまい呼ぶことが出来ない。
そこで、以下のように using を用いて Derived クラスのスコープに呼び込むことが出来る。class Base { public: virtual void mf1() = 0; virtual void mf1(int); virtual void mf2(); void mf3(); void mf2(double); }; class Derived: public Base { public: virtual void mf1(); void mf3(); vid mf4(); };
class Derived: public Base { public: using Base::mf1; using Base::mf3; virtual void mf1(); void mf3(); vid mf4(); };
最近のコメント