没有函数体且初始化为 0 0 0 的虚函数叫做纯虚函数,用来定义接口规范。
含有纯虚函数的类叫做抽象类。
抽象类不可以实例化,即不可以创建对象。
抽象类也可以含有成员变量和非纯虚函数。
如果父类是抽象类,那么子类中必须要实现父类中定义的纯虚函数。如果子类没有完全重写纯虚函数,那么这个子类依然是抽象类。
#include <iostream>
using namespace std;
class Animal
{
public:
virtual void speak() = 0;
virtual void run() = 0;
};
class Dog : public Animal
{
public:
void run() { cout << "Dog::run()" << endl; }
};
class Hashiqi : public Dog
{
public:
void speak() { cout << "Hashiqi::speak()" << endl; }
};
int main()
{
//Animal anim; // 报错,Animal是抽象类,不可以创建对象
//Dog dog; // 报错,Dog是抽象类,不可以创建对象
Hashiqi ha; // 正确,Hashiqi不是抽象类,可以创建对象
return 0;
}