1.当在基类中不能为虚函数给出一个有意义的实现时,可以将其声明为纯虚函数,其实现留待派生类完成。例如,把多边形作为一个基类可以派生出三角形,正方形等子类,但多边形本身生成对象就不大合理了,这时就可以把多边形的成员函数定义为纯虚函数。
2.含有纯虚函数的类为抽象类,抽象类所包含的函数仅仅是声明,都是没有函数定义的,所以抽象类不能创建对象。
class Polygon
{
public:
Polygon(){cout<<"Polygon"<<endl;}
virtual ~Polygon(){cout<<"~Polygon"<<endl;}
virtual double area() const=0;
};
class Triangle:public Polygon
{
public:
~Triangle(){cout<<"~Triangle"<<endl;}
Triangle(double h, double w) {H=h; W=w;}
double area() const {return H*W*0.5;}
private:
double H;
double W;
};
class Rectangle:public Polygon
{
public:
~Rectangle(){cout<<"~Rectangle"<<endl;}
Rectangle(double h, double w) {H=h; W=w;}
double area() const {return H*W;}
private:
double H;
double W;
};
void main()
{
Polygon *p = new Triangle(5.0, 3.5);
double temp = p->area();
cout<<temp<<endl;
delete p;
p = new Rectangle(5.0, 3.5);
temp = p->area();
cout<<temp<<endl;
delete p;
}