C++ 抽象基类

纯虚函数

  • 纯虚函数是一个在基类中声明的虚函数,在基类没有定义,要求在任何派生类中都定义自己的版本;
  • 纯虚函数为各派生类提供一个公共接口(接口的封装和设计、软件的模块功能划分);
  • 纯虚函数说明形式: 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;
}

猜你喜欢

转载自blog.csdn.net/qq_40579095/article/details/81875225