C++ 中的虚函数 (Virtual Function)
一、简介
虚函数是 C++ 实现多态(Polymorphism)的核心机制。其核心理念在于通过基类指针或引用来访问派生类中重定义的函数。
假设我们有如下类层次结构:
#include <iostream>
using namespace std;
class A {
public:
virtual void foo() { cout << "A::foo() is called" << endl; }
};
class B : public A {
public:
virtual void foo() { cout << "B::foo() is called" << endl; }
};
在使用时:
A* a = new B();
a->foo(); // 调用的是 B::foo()
这里 a 虽然是指向 A 的指针,但实际被调用的却是 B 类的 foo()。这就是虚函数的典型应用。之所以称为'虚',是因为它涉及'推迟联编'或'动态联编'。函数调用不是在编译期确定的,而是在运行期根据对象的实际类型决定。编写代码时无法预知具体调用哪个派生类的函数,因此被称为'虚'函数。
需要注意的是,虚函数必须借助指针或引用才能体现多态效果。如果是对象直接调用,则不会发生多态:
class A {
public:
virtual void foo();
};
class B : public A {
virtual void ;
};
{
A a;
a.();
}

