C++入门 --- 纯虚函数与抽象类
一、纯虚函数的定义与使用
1. 在虚函数后加上=0,表示该函数不需要实现代码,也代表该类不能实例化;
2. 纯虚函数如果没有实现,那么包含该纯虚函数的类是抽象类;
3. 纯虚析构一定要有实现;
二、抽像类的概念
1. 接口类:只是该类作为父类,规范对外使用的接口(某些函数)
2. 抽象类:一定要包含某一个纯虚函数,并且没有被实现
示例代码:
1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 //父类只是为了子类提供接口:接口类 7 class CAnimal 8 { 9 public: 10 CAnimal(int) {} 11 virtual ~CAnimal() = 0 {}; //纯虚析构一定要有实现 12 virtual void Run() = 0; //纯虚函数,不需要实现 13 }; 14 15 class CFish :public CAnimal { 16 public: 17 CFish() :CAnimal(1) {} 18 virtual ~CFish() {} 19 virtual void Run() { cout << "CFish:Run()\r\n"; } 20 }; 21 22 int main() 23 { 24 //CAnimal CA; 添加纯虚析构后,抽象类不能被实例化 25 26 //创建一个鱼对象 27 CFish fish; 28 29 CAnimal* PAm = new CFish; 30 return 0; 31 }