C++ 虚函数

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

#include <iostream>

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

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

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

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

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\n";
  }
};

输出

B class function
C class function
posted @ 2021-01-07 23:52  Node_Sans  阅读(105)  评论(0编辑  收藏  举报