贵港购物网站开发设计,做网站卖什么,简约的网页设计,最能打动顾客的十句话文章目录 一、什么叫继承#xff1f;二、单继承三、多继承3.1多继承的各种情况3.1.1一般情况3.1.1特殊情况#xff08;菱形继承#xff09; 四、菱形继承引发的问题4.1 问题1:数据冗余4.2 问题2:二义性#xff08;无法确定到底是访问哪个#xff09; 五、虚拟继承解决菱形… 文章目录 一、什么叫继承二、单继承三、多继承3.1多继承的各种情况3.1.1一般情况3.1.1特殊情况菱形继承 四、菱形继承引发的问题4.1 问题1:数据冗余4.2 问题2:二义性无法确定到底是访问哪个 五、虚拟继承解决菱形继承的问题5.1虚拟继承是什么5.2虚拟继承如何解决二义性和数据冗余? 六、继承和组合相对比6.1继承具有高耦合性低内聚关联性强6.2组合具有低耦合高内聚的特性关联性低 先赞后看养成习惯^ _ ^3 ❤️ ❤️ ❤️ 码字不易大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦 所属专栏:C进阶 一、什么叫继承 继承就是子类继承父类的公有的和保护的成员子类在C中被称作派生类父类也就是基类 细节如下图 通过监视窗口可以看到son继承了farther的成员并且son的改变也影响着farther同时farther的改变也能影响son 如果将基类的成员变成被保护的话那么只有派生类可以访问到外面访问不到 二、单继承 下面的图示就是表示单继承的关系 三、多继承
3.1多继承的各种情况
3.1.1一般情况 3.1.1特殊情况菱形继承 编译器里面也用了菱形继承但是在真正工程项目上面基本上用的很少因为会引发一系列问题 四、菱形继承引发的问题
4.1 问题1:数据冗余 在everyone对象中person成员有两个
4.2 问题2:二义性无法确定到底是访问哪个 指定作用域的话就可以访问到但是造成了数据冗余的问题还是无法全部解决问题
五、虚拟继承解决菱形继承的问题
5.1虚拟继承是什么
就是在类前面加一个virtual
5.2虚拟继承如何解决二义性和数据冗余? 如下图B与C对象分别有一个指针这个指针是指向对象A的地址可以找出A对象在B和C中成员变量的值 其中D包含整个BAC这里的D不仅仅只包含_d的值图解有点问题 六、继承和组合相对比
6.1继承具有高耦合性低内聚关联性强 6.2组合具有低耦合高内聚的特性关联性低 在一般的项目工程中组合的用处比较多继承由于高耦合不适用于一些场景但是后面的多态需要用到它