Есть ли способ вызвать метод базового класса объекта, который переопределяется? (C ++) - PullRequest
2 голосов
/ 25 октября 2009

Я знаю, что некоторые языки позволяют это. Возможно ли это в C ++?

Ответы [ 3 ]

5 голосов
/ 25 октября 2009

Да

#include <iostream>

class X
{
    public:
        void T()
        {
            std::cout << "1\n";
        }
};

class Y: public X
{
    public:
        void T()
        {
            std::cout << "2\n";
            X::T();             // Call base class.
        }
};


int main()
{
    Y   y;
    y.T();
}
2 голосов
/ 25 октября 2009
class A
{
  virtual void foo() {}
};

class B : public A
{
   virtual void foo()
   {
     A::foo();
   }
};
1 голос
/ 25 октября 2009

Да, просто укажите тип базового класса.

Например:

#include <iostream>

struct Base
{
    void func() { std::cout << "Base::func\n"; }
};

struct Derived : public Base
{
    void func() { std::cout << "Derived::func\n"; Base::func(); }
};

int main()
{
    Derived d;
    d.func();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...