[20] 继承 — 虚函数
(Part of C++ FAQ Lite, Copyright © 1991-2001, Marshall Cline, cline@parashift.com)
简体中文版翻译:申旻,nicrosoft@sunistudio.com(东日制作室,东日文档)
FAQs in section [20]:
- [20.1] 什么是“虚成员函数”?
- [20.2] C++ 怎样同时实现动态绑定和静态类型?
- [20.3] 虚成员函数和非虚成员函数调用方式有什么不同?
- [20.4] 析构函数何时该时虚拟的?
- [20.5] 什么是“虚构造函数(virtual constructor)”?
[20.1] 什么是“虚成员函数”?
从面向对象观点来看,它是 C++ 最重要的特征:[6.8], [6.9].
虚函数允许派生类取代基类所提供的实现。编译器确保当对象为派生类时,取代者(译注:即派生类的实现)总是被调用,即使对象是使用基类指针访问而不是派生类的指针。这样就允许基类的算法被派生类取代,即使用户不知道派生类的细节。
派生类可以完全地取代基类成员函数(覆盖(override)),也可以部分地取代基类成员函数(增大(augment))。如果愿意的话,后者由派生类成员函数调用基类成员函数来完成。
[ Top | Bottom | Previous section |