萌新向,C++继承之我见

初学C++,发一个对类的继承的看法,希望有大牛对于文中理解不足之处予以直接了断的方式斧正,谢谢!


这里是对整个继承体系的一个理解,

首先,继承我们可以姑且想做是吧父类对象的所有成员除了函数(函数情况额外讨论)将其完全copy到派生类里面去的,copy的访问控制类型是小于等于继承访问控制的因此就有书上说的,继承访问控制对当前派生类无影响


再来讨论继承函数问题,首先对于一个虚函数来说,这个不用多说了,但是对于所有的函数,都有派生类的只要使名字相重的,所以这里就很类似平时的名称空间大小问题,很明显,基类包含派生类,所以此时相同名称的函数会被隐藏,但是可以通过基类的指针指向派生类对象来访问或者是直接通过作用域运算符来访问


这里也就可以很明显的感受到,一个类调用其方法的固定性,因为类的生成往往是先是成员之后是成员函数,成员函数直接写入内存中,调用则通过指针(其实在编程中,大部分的标识符都代表的是一个指针)和调用运算符来调用函数的,所以此时匹配的就是当前类的那个函数,并且要求参数相当而且出现参数不同不会去对其派生类或者是基类去寻找匹配,所以此时就引入了虚函数,虚函数的概念则是之前函数指针的一个封装,虚函数的指针直接保存在了当前类的成员指针内,所以做调用可以做到调用到当前的动态类型的那个函数,所以这里又引出了动态类型和静态类型,静态类型就是编译期间就知道的类型,动态类型则是运行时才知道的类型


再回到之前,基类类型按照小于等于继承访问限制的方式copy进去的一个佐证,都知道private 的情况下,继承类无法访问当前private对象的,所以如果一个间接基类以private 的方式直接继承自直接基类里面的话,我们的派生类时无法访问那些对象的,对于通过对象访问也是一样的。


之后再来随便说说之前的观点的一些拷贝控制的小佐证,对于初始化基类的成员我们通常都是调用基类的构造函数的,拷贝赋值运算的话也是直接通过基类的名称空间直接调用的方式来修改时最好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值