1、纯虚函数和抽象类
在之前发布的博客《深度剖析C++中多态的原理》一文中已经提到了多态的概念,即不同的对象去完成某个行为时会产生不同的状态。因此在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的函数,因此可以将虚函数改为纯虚函数。
纯虚函数语法:virtual 返回值类型 函数名 (参数列表)= 0 ;
抽象类就是指当一个类中有了纯虚函数或纯虚析构函数时(纯虚析构后面会有讲解),这个类就称作抽象类。抽象类有以下特点:
- 无法实例化对象(无论采用何种方式)
- 子类必须重写抽象类中的纯虚函数,否则也属于抽象类
以下时代码示例,读者可自行运行查看
#include<iostream>
using namespace std;
class Base
{
public:
virtual void func() = 0;
};
class Son :public Base
{
public:
virtual void func()
{
cout << "func调用" << endl;
};
};
void test01()
{
//Base base;错误示例,抽象类无法实例化对象
Base* base = NULL;
//base