1. 虚函数
虚函数 的目的是为了允许用基类的指针调用子类的虚函数,是必须实现 的函数。虚函数是C++实现动态单分派子类型多态 的方式:
- 动态:在运行时决定的
- 单分派:基于一个类型去选择调用哪个函数
- 子类型多态:以子类-父类关系实现多态
下面通过一个例子来具体说明:
1 | class A |
虚函数只能借助于指针或者引用来达到多态的目的,核心理念就是通过基类访问派生类定义的函数。
2. 纯虚函数
纯虚函数 是在基类中定义,但不能实现 ,只能由其派生类自己定义实现此函数。形式如下:
virtual ReturnType Function()=0
引入纯虚函数的好处:
- 纯虚函数定义了一个接口 ,起到了规范作用
- 包含纯虚函数的类是抽象类,抽象类是不能被实例化的。如果派生类没有实现纯虚函数,那么此派生类也是抽象类;如果派生类给出了基类中的纯虚函数的实现,那么此派生类就不是抽象类。
注:
- 析构函数是虚函数;
- 友元函数不是虚函数,但它可以通过调用虚函数来解决友元的虚拟问题。