1.纯虚函数是一个在基类中声明的虚函数,在基类中没有定义,它要个各个派生类都定义自己的版本;
2.纯虚函数为各个派生类提供一个公共界面(接口的封装和设计,软件的模块功能划分);
3.纯虚函数的形式: virtual 类型 函数名(参数列表) = 0;
4.一个具有纯虚函数的基类称为抽象类。
抽象类shape的用法说明:
1.shape x; //error,抽象类不能定义对象
2.shape *p //ok,可以声明抽象类的指针
3.shape fun() //error,抽象类不能作为函数返回类型
4.void fun(shape) //error,抽象类不能作为函数参数类型
5.shape& fun(shape&) //ok,可以声明抽象类的引用
纯虚函数的例子:
1 #include<iostream> 2 using namespace std; 3 4 //抽象类,封装好函数的接口,为下面的派生类搭好框架,则用抽象类的指针(或引用)可以访问派生类的属性 5 class Point 6 { 7 public: 8 virtual float getArea()=0; 9 private: 10 }; 11 12 //派生类 13 class Rectangle:public Point 14 { 15 public: 16 Rectangle(float len,float wid):length(len),width(wid){} 17 virtual float getArea(){return length*width;} 18 private: 19 float length; 20 float width; 21 }; 22 23 //派生类 24 class Circle:public Point 25 { 26 public: 27 Circle(float r):radiu(r){} 28 virtual float getArea(){return 3.1416*radiu*radiu;} 29 private: 30 float radiu; 31 }; 32 33 34 int main() 35 { 36 Point* p=NULL; 37 Rectangle rec(4,5); 38 Circle cir(6); 39 40 p=&rec; 41 cout<<p->getArea()<<endl; 42 43 p=○ 44 cout<<p->getArea()<<endl; 45 46 return 0; 47 }