C++虚继承与虚基类

本文介绍了C++中的虚继承和虚基类概念,旨在解决多继承时可能出现的二义性问题。通过实例展示了不使用虚继承和使用虚继承时的差别,强调了虚继承能确保派生类中只有一个虚基类的副本,避免了内存浪费和二义性。并解释了虚继承下构造函数的调用次序规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++的三大特性:封装,继承,多态。继承的目的是就是为了代码重用,避免的重复代码的编写。继承分为单继承和多继承,单继承就是每次继承的基类只能有一个,属于一对一的关系;多继承则是子类可以同时继承自多个基类,拥有多个基类的特性,属于一对多的关系!

虚继承的定义

在多继承中派生类不能多次直接继承同一个基类,但是派生类的直接基类可能派生自同一个基类。例如:定义一个雇员类Employee作为顶层基类;另外定义一个管理人员类Manager和一个销售人员类Salesman作为Employee类的直接派生类 。再用Manager类和Salesman类共同派生出销售经理类SalesManager。

由Employee派生出的Manager类的对象中,存在Employee类的子对象;同时Salesman也有一个Employee类的子对象。这样在最终的SalesManager中就存在两份Employee对象的拷贝。这样对SalesManager操作时就很容易产生二义性,如:

SalesManager wang;
wang.setName("王某");
此时编译时,编
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值