переопределение в многоуровневом наследовании с промежуточным производным классом без функции переопределения - PullRequest
0 голосов
/ 12 марта 2019

Могу ли я переопределить виртуальную функцию в базовом классе в иерархии наследования при многоуровневом наследовании?Например,

class Base {
public : 
virtual void method1();

///
}

class Derived1 : Base {
public : 
void method2();
}

class Derived2 : Derived1 {
public :
void method1();
}

Могу ли я получить доступ к Derived2 :: method1 (), используя полиморфизм?

Base* myClass = new Derived2();

myClass->method1();

1 Ответ

3 голосов
/ 12 марта 2019

Как только родительский класс помечает функцию как virtual, эта «виртуальность» остается.Неважно, сколько у вас уровней наследования или какие-либо промежуточные классы не переопределяют функцию, как только функция сделана virtual, функция будет всегда быть virtual.

Итак, чтобы ответить на ваш вопрос: Да, можно использовать Derived2::method1 через полиморфизм.Код, который вы показываете, должен работать нормально.

...