【无标题】虚函数、纯虚函数、虚基类、虚继承

1.虚函数 

语法:virtual 返回值类型 函数名(参数列表),然后子类重写父类的虚函数。 (通过指针调用函数时使用)

注意:派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 

 

若没有定义为虚函数

 

 

2.纯虚函数 

语法:virtual 返回值类型 函数名(参数列表)=0,当类中有了纯虚函数,这个类也称为抽象类。抽象类特点:无法实例化对象,子类必须重写抽象类中的纯虚函数,否则也属于抽象类。

抽象类的成员函数中至少有一个是没有实现的函数(即无函数体定义的函数,也就是虚函数)

例题: 

D、具有纯虚函数的类不能创建类对象

这个描述是正确的。纯虚函数是在基类中声明的虚函数,它在基类中没有具体的实现,并且要求任何非抽象派生类都必须实现该函数。含有纯虚函数的类被称为抽象类。由于抽象类不能实例化,也就是说,不能直接创建具有纯虚函数的类的对象,因此选项D是正确的。

其他选项的解释如下: A、不正确,纯虚函数不需要是一个空函数,它只是没有在基类中定义具体实现。 B、不准确,具有纯虚函数的类是抽象类,而不是特指虚基类。虚基类是指使用virtual关键字来声明基类,以解决多重继承中的菱形问题,与是否有纯虚函数无关。 C、表述不完全准确,派生类如果也是抽象类则不必实现纯虚函数,只有当派生类不再是抽象类(即所有纯虚函数都被实现)时才需要实现基类的纯虚函数。

3.虚基类与虚继承

  • 虚继承:是一种继承方式,通过在继承语法中加入virtual关键字来实现。当一个类使用虚继承从另一个类派生时,表明它希望解决多重继承中可能产生的基类成员重复问题。

  • 虚基类:当一个类通过虚继承成为另一个类的基类时,这个基类就变成了虚基类。

虚基类是C++中在多层继承结构中确保基类只被继承一次的机制。当一个类继承自多个基类,而这些基类中有共同的基类时,如果不使用虚继承,共同的基类会被多次继承,导致派生类中存在多份基类的数据成员。使用虚基类可以解决这一问题,确保无论继承路径如何,基类在派生类中只有一份实例。

虚基类是指使用virtual关键字来声明基类,以解决多重继承中的菱形问题,与是否有纯虚函数无关。

以下是一个实例:

当主函数编程指针形式时结果相同 (注意:只能父类指针指向子类对象,不能子类指针指向父类对象)

 

 

  指针换成Base类  

 

指针换成B类 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值