C++父类为虚函数(转)

转自https://blog.csdn.net/shltsh/article/details/45999727

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

发布日期:
分类:C++

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注