1. ホーム
  2. c++

[解決済み] 派生クラス関数から親クラス関数を呼び出すには?

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
};