вопросы о виртуальных функциях в C ++

Я новичок в C ++, сейчас изучаю виртуальные функции. Есть некоторые вопросы, которые меня сильно смущают.

например:

class A {
  public:
  virtual void f() {
      //do something; 
  }
}

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

  2. Виртуальные функции предоставляют способ перегрузки методов. Если B наследует A и не объявляет f () как виртуальный , тогда может ли класс C , который наследует B , перегрузить f () и достичь полиморфизма?

6
задан Björn Pollex 6 May 2011 в 11:19
поделиться