首页 > 编程语言 > 详细

C++继承——特殊点

时间:2021-02-21 09:23:31      阅读:38      评论:0      收藏:0      [点我收藏+]

C++继承——特殊点

同名成员

当父子有相同的成员的时候,加上作用域::可以来选择访问具体的成员。

同名函数

如果子类中出现父类同名的函数,那么子类会隐藏掉父类的所有同名函数,如果想要访问的话也添加作用域就好了

同名静态成员

静态成员是在类初始化前就初始化,属于类外的东西,静态成员函数只能使用静态成员变量。

和同名成员、同名函数的处理方式是一样的。也是用作用域来处理。

多继承语法

多继承可能会引发父类中有同名成员出现,需要添加作用域区分,所以不太建议用多继承

class 子类: test1,test2,,,,,

当父类中出现同名的成员,也添加作用域处理就好了。

菱形继承

两个派生类继承同一个基类

又有某个类同时继承这两个派生类

这种继承被称为菱形继承,或者钻石继承

技术分享图片

菱形继承的问题

1 羊继承了动物的数据,驼也同样继承了动物的数据,当草泥马使用数据的时候,就会产生二义性

2 草泥马继承自动物的数据基础了两份,但是只需要一份就好了。

当出现菱形继承的时候,两个父类要访问用作用域区分就好

利用虚继承解决菱形继承的问题

在继承前添加关键字virtual,被继承的类就称为虚基类。

当产生了虚继承后,子类会在最前面的字节产生一个指针来虚基类表,虚地址表的前四个字节内容是该指针距离所在类的偏移,后四个字节的值为该指针和虚基类的偏移

C++继承——特殊点

原文:https://www.cnblogs.com/Sna1lGo/p/14423971.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!