纯虚函数:没有函数体且初始化为0的虚函数,用来定义接口规范

类似于Java中接口、抽象类

类似于OC中的协议protocol

// Animal是个抽象类
class Animal {
public:
	virtual void speak() = 0;
	virtual void run() = 0;
    // 抽象类也可以包含非纯虚函数
    void test() {
    
    }
};

如果父类是抽象类,子类没有完全实现纯虚函数,那么这个子类依然是抽象类

// 子类Cat依然是抽象类
class Cat : public Animal {
public:
	void run() {

	}
};

非抽象类示例:

class WhiteCat : public Cat {
public:
	void speak() {

	}
	void run() {

	}
};
int main() {

    // 编译报错
    Animal *cat = new Animal();

    // 编译报错
    Cat *cat = new Cat();
    
    // 编译通过
	Cat *cat = new WhiteCat();

	getchar();
	return 0;
}