纯虚函数
- 纯虚函数是一个在基类中声明的虚函数,在基类没有定义,要求在任何派生类中都定义自己的版本;
- 纯虚函数为各派生类提供一个公共接口(接口的封装和设计、软件的模块功能划分);
- 纯虚函数说明形式: virtual 函数类型 函数名(参数表) = 0;。
抽象类
- 抽象基类(ABC)为一个具有纯虚函数的基类(可有多个纯虚函数)。
- 抽象基类不能建立对象;
- 抽象基类不能作函数参数;
- 抽象基类不能作函数返回类型;
- 可以声明抽象基类的指针;
- 可以声明抽象基类的引用。
一个应用抽象基类编程的c++代码如下
#include <iostream>
//含有纯虚函数的基类为抽象基类
//面向抽象类编程(面向一套预先定义好的接口编程)
class Figure
{
public:
virtual void GetArea() = 0;//纯虚函数
};
class Circle : public Figure
{
private:
float m_r;
public:
Circle(float r) : m_r(r) {}
virtual void GetArea()
{
std::cout << "圆的面积为:" << 3.14 * m_r * m_r << std::endl;
}
};
class Triangle : public Figure
{
private:
float m_a;
float m_b;
public:
Triangle(float a, float b) : m_a(a), m_b(b) {}
virtual void GetArea()
{
std::cout << "三角形的面积为:" << m_a * m_b / 2 << std::endl;
}
};
void DisplayArea(Figure * p_figure)
{
p_figure->GetArea();//会发生多态
}
int main()
{
Circle Circle1(2.5);
Triangle Triangle1(1.2, 3.6);
DisplayArea(&Circle1);
DisplayArea(&Triangle1);
return 0;
}