C++:虚函数和多态
C++中虚函数的唯一用处就是构成多态。
C++提供多态的目的是:可以通过基类指针对所有派生类(包括直接派生和间接派生)的成员变量和成员函数进行“全方位”的访问,尤其是成员函数。如果没有多态,我们只能访问成员变量。
只有派生类的虚函数遮蔽基类的虚函数(函数原型相同)才能构成多态。
构造函数不能是虚函数。析构函数可以声明为虚函数,而且有时候必须要声明为虚函数。派生类析构函数始终会调用基类的析构函数
下面是构成多态的条件:
- 必须存在继承关系;
- 继承关系中必须有同名的虚函数,并且它们是遮蔽(覆盖)关系。
- 存在基类的指针,通过该指针调用虚函数。