【C++】-抽象类

抽象类

如果基类只想表达一些抽象的概念,并不与实际的对象相关联,这时候就可以使用抽象类。

如果一个类中有纯虚函数,则这个类是一个抽象类。

如果一类是抽象类,则这个类中一定有纯虚函数。

纯虚函数也是虚函数的一种,这种函数只有声明,没有定义。

virtual 返回值类型 函数名(参数列表) = 0;

不能直接使用抽象类作为声明类型,不存在抽象类类型的对象。(不能实例化对象)

抽象类作为基类时,具有两种情况:

● 派生类继承抽象类,覆盖并实现所有的纯虚函数,此时派生类可以作为普通类使用,即不再是抽象类。

● 派生类继承抽象类,没有把抽象类中所有的纯虚函数覆盖并实现,此时派生类也变为抽象类。等待他的派生类覆盖并实现剩余的纯虚函数。

#include <iostream>

using namespace std;

// 抽象类 :形状
class Shape
{
public:
    // 纯虚函数
    virtual void area() = 0; // 面积
    virtual void perimeter() = 0; // 周长
    virtual ~Shape()
    {
    }
};
// 圆形
class Circle : public Shape
{
public:
    void area()
    {
        cout << "圆形计算面积" << endl;
    }

    void perimeter()
    {
        cout << "圆形计算周长" << endl;
    }
};

// 多边形
class polygon: public Shape
{
public:
    void perimeter()
    {
        cout << "多边形计算周长" <<endl;
    }

};

// 矩形
class Rectangle :public polygon
{
public:
    void area()
    {
        cout << "矩形计算面积"  << endl;
    }
    void perimeter()
    {
        cout << "矩形计算周长" <<endl;
    }
};

int main()
{
    //    Shape s; // 错误抽象类无法实例化对象
    Circle c;
    c.area();
    c.perimeter();

    //    polygon p; // 错误 没有完全覆盖纯虚函数

    Rectangle r;
    r.area();
    r.perimeter();
    //    Shape &s;

    return 0;
}

使用抽象类需要注意以下几点:

● 抽象类的析构函数必须使用虚析构函数

● 抽象类支持多态,可以存在抽象类的指针或引用。

● 因为抽象类的作用是指定算法框架,因此在一个继承体系中,抽象类的内容相对丰富且重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值