文章目录
定义与概念
- 纯虚函数:一个函数只有函数名和形参列表,没有具体实现;语法:
virtual double GetArea()=0;
- 抽象类:在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象。抽象类是不完整的,它只能用作基类。
普通类继承抽象类必须实现全部纯虚函数,否则依然不能实例化,还是一个抽象类。
意义:通过抽象类来构建接口,不同的子类实现接口,通过抽象类的指针来接不同子类的地址,实现多态。而且业务层(main函数)不需要关心具体子类实现,只跟抽象类打交道,降低耦合度和提高维护性。
例子:
#include "stdafx.h"
#include <iostream>
using namespace std;
class Shape
{
virtual double GetArea() = 0;
};
class Rect :public Shape
{
public:
Rect(int a, int b)
{
width = a;
height = b;
}
virtual double GetArea()
{
return width * height;
}
private:
int width;
int height;
};
class Circle :public Shape
{
public:
Circle(int a)
{
radius = a;
}
virtual double GetArea()
{
return 2*3.14* radius;
}
private:
int radius;
};
int main()
{
Rect r(1, 2);
double area= r.GetArea();
cout << " Rect area:" << area << endl;
Circle c(1);
double area1 = c.GetArea();
cout << "Circle area:" << area << endl;
return 0;
}