Как вызвать родительский метод из тела перегруженного в С++?

262
14 января 2017, 12:48

Есть класс. У него есть другой класс-наследник. В нём перегружается родительский метод.

Мне нужно из перегруженного метода наследника, вызвать метод родителя.

Как это сделать?

class Foo{
 public:
    void example(){
        // Код родителя
    }
};
class Bar : public Foo{
 public:
    void example(){
        // Тут должен выполнится код родителя
        // А тут - код наследника
    }
};
Answer 1

Можете сделать это следующим образом

void example(){
    Foo::example();
    // А тут - код наследника
}

или так

void example(){
    this->Foo::example();
    // А тут - код наследника
}

или (при условии, что метод не является виртуальным), например, так

void example(){
    static_cast<Foo *>( this )->example();
    // А тут - код наследника
}

Так как метод, объявленный в производном классе, скрывает одноименный метод в родительском классе, то следует использовать квалифицированное имя метода родительского класса.

READ ALSO
Перенос rich текста между редакторами

Перенос rich текста между редакторами

Подскажите, как переносится форматирование и rich текст при копировании между совершенно разными редакторами, например Google Docs в браузере и Word на ПКЧто...

331
Изменение .bin в с++

Изменение .bin в с++

Имеется бинарный файл, логически разделенный на несколько частейПроблема в том, что я не хочу загружать всю информацию в оперативную память,...

324
Ubuntu server. Дать доступ к MySQL

Ubuntu server. Дать доступ к MySQL

Установил MySQL на свой домашний ubuntu serverС самого сервера могу подключится через root пользователя к MySQL

333