Я новичок в C ++, сейчас изучаю виртуальные функции. Есть некоторые вопросы, которые меня сильно смущают.
например:
class A {
public:
virtual void f() {
//do something;
}
}
class B: public A {
public:
virtual void f() {
//do something;
}
}
класс A
содержит виртуальную функцию f ()
, а класс B
наследует ее. Внутри класса B
функция f ()
также объявлена как виртуальная, поэтому это означает, что f ()
в классе B
перегружается f ()
в классе A
? Разрешает ли он классам, наследующим B
, перегружать f ()
? Или B
определяет новую виртуальную функцию, которая отличается от f ()
в классе A
?
Виртуальные функции предоставляют способ перегрузки методов. Если B
наследует A
и не объявляет f ()
как виртуальный
, тогда может ли класс C
, который наследует B
, перегрузить f ()
и достичь полиморфизма?