1. ホーム
  2. c++

[解決済み] ベースクラスの仮想関数をオーバーライドしている場合、その関数を呼び出すことはできますか?

2022-03-14 06:47:25

質問

クラスがあるとします FooBar はこのように設定します。

class Foo
{
public:
    int x;

    virtual void printStuff()
    {
        std::cout << x << std::endl;
    }
};

class Bar : public Foo
{
public:
    int y;

    void printStuff()
    {
        // I would like to call Foo.printStuff() here...
        std::cout << y << std::endl;
    }
};

コードに注釈があるように、オーバーライドしているベースクラスの関数を呼び出せるようにしたいと思います。Javaでは super.funcname() の構文があります。C++でこれは可能ですか?

どのように解決するのですか?

C++の構文はこのようになっています。

class Bar : public Foo {
  // ...

  void printStuff() {
    Foo::printStuff(); // calls base class' function
  }
};