если в вашем базовом классе есть виртуальный деструктор, ваш собственный деструктор автоматически становится виртуальным - PullRequest
3 голосов
/ 27 марта 2012

Я знаю, что утверждение заголовка верно.

А как насчет обычной функции?

Например,

class Father {

    virtual void foo() {...;}

}

class Son : public Father {

    void foo() {...;}

}

class GrandSon : public Son {

    void foo() {...;}

}

Может ли GrandSon переопределить foo сына?В общем, если ваш базовый класс имеет виртуальную функцию, соответствующая функция производного класса автоматически становится виртуальной?Это правда?

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

C ++ 2011: 10.3 Виртуальные функции

2: если виртуальная функция-член vf объявлена ​​в классе Base и в классе Производная , полученная прямо или косвенно из Base , функция-член vf с тем же именем, списком типов параметров, cv-квалификацией и ref-квалификатором (или отсутствием того же самого), что и Base :: vf объявляется, тогда Derived :: vf также является виртуальным ( независимо от того, объявлено оно или нет ) ...

4 голосов
/ 27 марта 2012

Да, в C ++ производный класс «наследует» виртуальный аспект всех методов, а не только деструкторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...