纯虚函数与抽象类

#include <iostream>
#include <cmath>
using namespace std;

//几何图形类
class Geometry{
public:
    virtual ~Geometry(){
    }
public:
    //获取面积
    virtual float getArea()=0;
    /*
    virtual float getArea(){
        return 0; 对于高度抽象的基类,内部return 0;这种实现压根没意义
        所以有了纯虚函数的概念
    }
    */
};

//矩形类
class Rectangle:public Geometry{//多态必须是共有继承
public:
    Rectangle(float minX,float minY,float maxX,float maxY)
    :minx(minX),miny(minY),maxx(maxX),maxy(maxY)
    {
        type = new char[20];
    }
    ~Rectangle(){
        if (type){//如果type有值
            delete []type;
        }
    }
public:
    float getArea(){
        return fabs((minx-maxx)*(miny-maxy));
    }
private:
    float minx,miny,maxx,maxy;
    char* type;
};

int main(int argc, const char * argv[]) {
    Geometry *g = new Rectangle(0,0,3,4);
    cout<< g->getArea()<<endl; //12
    delete g;
    return 0;
}

results matching ""

    No results matching ""