C++ 虚函数

C++ 虚函数主要是解决函数继承时,被重载的方法调用的问题。这么说可能有点晕,来看看下面这个程序

#include <iostream>

using std::cout;
using std::endl;

class A {
public:
  void f() {
    cout << "A class function
";
  }
};

class B : public A {
public:
  void f() {
    cout << "B class function
";
  } 
};

class C : public A {
public:
  void f() {
    cout << "C class function
";
  } 
};

int main() {
  B testb;
  C testc;
  A *p;
  p = &testb;
  p->f();
  p = &testc;
  p->f();
  return 0;
}

输出结果

A class function
A class function

在上面这个程序中,我们定义了三个类,其中类B和类C继承自类A。然后我们用一个类A的指针变量p指向了实例testb, testc。然后调用了函数f。但是这个函数f很显然都是类A的函数。那么我们现在需要这个程序能够根据实例的类型,动态选择需要调用的f函数。那么我们只需要将函数f定义成虚函数就可以了

class A {
public:
  virtual void f() {
    cout << "A class function
";
  }
};

输出

B class function
C class function
原文地址:https://www.cnblogs.com/Node-Sans-Blog/p/14249366.html