#纯虚函数是什么
class Shape{
public:
virtual float area() = 0;
private:
string color;
};
像这样用virtual关键字修饰,并且末尾加上 =0 的格式声明的函数就是纯虚函数,还有一个重要特征,就是在当前类里这个方法不能有具体的实现,也就是不能有方法体。同时拥有纯虚函数的类会被默认定义为抽象类。
#什么是抽象类
至少拥有一个或者一个以上的纯虚函数的类,这种类不能创建对象,但是可以被继承,通常通过继承抽象类,然后通过重写纯虚函数后,方可以通过抽象父类的子类的对象来访问函数和数据成员。
//子类继承父类后,通过子类对象可以调用重写父类的纯虚函数
class Square : public Shape{
public:
virtual float area(){ cout<<"正方形"<<endl;};
};
#纯虚函数和抽象类的作用
抽象类通常被作为基类使用,假设需要创建一个水牛类和一个奶牛类,他们有共性,那就是都是牛,那么可以定义一个牛类作为共同的基类,让奶牛和水牛都继承牛的特征,然后在分别在他们自己的类中添加自己的特征。这样的设计方便面向对象程序的设计和管理,提供更为严谨的封装。