纯虚函数和抽象类

新的概念:纯虚函数和抽象类

  • 前面定义的类都是“具体类”,能够使用这些类定义对象。C++还提供了一种“抽象类”,抽象类不能实例化对象,它的唯一用途是为其他类提供合适的基类其他类可从它这里继承和(或)实现接口
  • 一个类是抽象类还是具体类,主要看其是否包含纯虚函数,包含纯虚函数的类就是抽象类。纯虚函数就是在声明时初始化为0、没有函数体的虚函数,其声明形式为:
virtual <函数类型> 纯虚函数名(<形参类型表>)=0;

例如:我们可以定义Base类:

class Base
{
  public:
    virtual void fun()=0;  //纯虚函数
};  

上面定义的Base类中包含纯虚函数,因此,Base类是一个抽象类。如果使用Base类创建对象,则编译程序时会报错。例如:

Base b;  //错误:不能定义抽象类的对象!!!

再如,我们基于Base类创建两个派生类Derived1和Derived2:

class Derived1:public Base
{
};
class Derived2:public Base
{
   public:
     void fun()  //等价于 virtual void fun()
     {
       cout<<"Derived2类的fun()函数被调用!"<<endl;
     }
};

则:
Derived1 d1; //错误
Derived2 d2; //正确

一个类层次结构中可以不包含任何抽象类,但是很多良好的面向对象的系统,其类层次结构的顶部是一个抽象基类。有些情况中,类层次结构顶部有好几层都是抽象类。

在这里插入图片描述
在这里插入图片描述
好好看清楚了欧!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值