[解決済み] 派生クラス関数から親クラス関数を呼び出すには?
2022-03-14 10:22:18
質問
C++を使用して派生クラスから親関数を呼び出すにはどうすればよいですか?たとえば、次のようなクラスがあります。
parent
というクラスと
child
parentから派生したものです。その中で
各クラスには
print
関数を使用します。 子供のprint関数の定義で、親のprint関数を呼び出したいのですが。 どうすればいいでしょうか?
どのように解決するのですか?
関数を呼び出すと、それが基底クラスで定義されていれば、派生クラスでも自動的に利用できるようになります(ただし、その関数が
private
).
派生クラスに同じシグネチャを持つ関数がある場合は、 ベースクラスの名前の後にコロン2個を付けて曖昧さをなくすことができます。
base_class::foo(...)
. JavaやC#とは異なり、C++では、以下のようなことが行われることに注意する必要があります。
ではなく
を表すキーワードがあります (
super
または
base
をサポートしているので、C++は
多重継承
となり、曖昧になる可能性があります。
class left {
public:
void foo();
};
class right {
public:
void foo();
};
class bottom : public left, public right {
public:
void foo()
{
//base::foo();// ambiguous
left::foo();
right::foo();
// and when foo() is not called for 'this':
bottom b;
b.left::foo(); // calls b.foo() from 'left'
b.right::foo(); // call b.foo() from 'right'
}
};
ちなみに、同じクラスから2回直接派生することはできません。なぜなら、ベースクラスの1つを他のクラスから参照する方法がなくなるからです。
class bottom : public left, public left { // Illegal
};
関連
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C++で仮想関数が必要な理由とは?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] Pythonで子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み] なぜJavaではsuper.super.method();が許されないのですか?
-
[解決済み] ベースクラスの仮想関数をオーバーライドしている場合、その関数を呼び出すことはできますか?