ホームに戻る
関連 :
継承 (Inheritance) 仮想関数 (Virtual Function) 委譲コンストラクタと継承コンストラクタ
目次 :

親(継承元)クラスを指定して関数を呼び出す

通常、クラス内でメンバ関数を呼び出す場合は、( this ポインタによって関連付けられる)自身のメンバを呼ぶこととなる。
(自身ではなく)親クラスの関数を呼び出したい場合は、 スコープ解決演算子 ("::") を用いて親クラスの名前を指定する
⇒ オーバーライドした仮想関数中で、オーバーライド元の関数を呼び出すなど。
このとき呼び出せる関数は private 修飾されたもの以外に限られる。
// 親クラス class C_Parent { public: virtual void Hoge(); } // 子クラス class C_Child : public C_Parent { private: void Fuga(); } // Hoge() のオーバーライド void C_Child::Hoge() { // 親 (C_Parent) の Hoge() をコール C_Parent::Hoge(); } void C_Child::Fuga() { // 自身 (C_Child) の Hoge() をコール Hoge(); }

余談

JavaやC#では親クラスの名前を明示的に指定する必要は無く、super (Java)、base (C#)を用いる。
これは両者では多重継承が認められておらず、親クラスが一意に定まるため。