虚函数
函数(Virtual Function) 是实现面向对象编程中**多态(Polymorphism)**的核心机制
虚函数是在基类中通过virtual
关键字声明的成员函数,允许在派生类中重写(Override)该函数。
目的:通过基类指针或引用调用实际派生类对象的方法,实现运行时多态
1 | class Animal { |
- 编译器为每个包含虚函数的类生成一个虚函数表(vtable),存储虚函数地址。
- 对象的内存布局中包含指向vtable的指针(vptr),在运行时根据实际对象类型动态调用正确的函数。
虚函数 | 构造函数 |
---|---|
实现运行时多态 | 初始化对象内存和成员变量 |
依赖vtable和vptr | 负责初始化vtable和vptr |
允许派生类重写 | 每个类必须独立定义,不可继承或重写 |
通过基类指针/引用调用 | 直接由对象类型确定调用的构造函数 |
- 构造函数不能是虚函数,因其执行时虚函数机制尚未就绪
- 构造函数的多态性无意义,对象类型在构造时已明确