基底クラスの関数を派生クラスでprivateに変更する
ロベールのC++入門講座 13-11
前回のusingの応用です。
#include <iostream> class CBase { public: void func(char*); void func(int); }; class CSub : public CBase { private: // 基底クラスのfunc関数をprivateにする using CBase::func; }; void CBase::func (char *str) { std::cout << str << std::endl; } void CBase::func (int num) { std::cout << num << std::endl; } int main () { CBase obj1; obj1.func(100); // publicなのでアクセスできる CSub obj2; obj2.func(100); // privateなのでコンパイルエラーになる return 0; }
上記のようにCBaseクラスではfunc関数はpublicになっているが、CSubクラスではprivateになる。
もちろんusingを使わずにfunc関数を自分でオーバーライドしていけば同じようにprivateにできるけど、同じ処理をコピペして管理するのは現実的ではないですよね。
usingって色々なことができて凄く便利ですね。