ホームに戻る
関連 :
目次 :
親(継承元)クラスを指定して関数を呼び出す
通常、クラス内でメンバ関数を呼び出す場合は、( 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#)を用いる。
これは両者では多重継承が認められておらず、親クラスが一意に定まるため。