Страницы

Поиск по вопросам

вторник, 9 октября 2018 г.

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

Есть класс. У него есть другой класс-наследник. В нём перегружается родительский метод.
Мне нужно из перегруженного метода наследника, вызвать метод родителя.
Как это сделать?
class Foo{ public: void example(){ // Код родителя } };
class Bar : public Foo{ public: void example(){ // Тут должен выполнится код родителя // А тут - код наследника } };


Ответ

Можете сделать это следующим образом
void example(){ Foo::example(); // А тут - код наследника }
или так
void example(){ this->Foo::example(); // А тут - код наследника }
или (при условии, что метод не является виртуальным), например, так
void example(){ static_cast( this )->example(); // А тут - код наследника }
Так как метод, объявленный в производном классе, скрывает одноименный метод в родительском классе, то следует использовать квалифицированное имя метода родительского класса.

Комментариев нет:

Отправить комментарий