C++虚函数(3) - 子类中的虚函数

C++中, 一旦某个成员函数在基类中声明为虚函数,则它在所有的子类中都会成为虚函数。换言之,如果应该在基类中声明了某个函数为虚函数,则无需在子类中使用关键字virtual再去声明函数。

可以参考: http://www.umsl.edu/~subramaniana/virtual2.html


例如,下面程序中,B::fun() 会自动成为一个虚函数

#include<iostream>

class A
{
public:
  virtual void fun()
  {
    std::cout << "A::fun() called \n";
  }
};

class B : public A
{
public:
  void fun()
  {
    std::cout << "B::fun() called \n";
  }
};

class C : public B
{
public:
  void fun()
  {
    std::cout << "C::fun() called \n";
  }
};

int main()
{
  C c;       // C的对象
  B *b = &c; // 类型为B*的一个指针,指向对象c
  b->fun();  // 这行代码会打印 "C::fun() called"

  A *a = &c;
  a->fun();  //这行代码会打印 "C::fun() called"

  return 0;
}
输出:

C::fun() called
C::fun() called
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页