[c++07]成员变量在继承中的约束
Posted AIplusX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[c++07]成员变量在继承中的约束相关的知识,希望对你有一定的参考价值。
写在前面
这篇文章要分享的是父类的成员变量在private,public,protected三种限制情况下的继承与约束关系。
正文
首先来看看,在继承的时候,父类的成员变量是以何种形式存在于子类的对象中的。
首先来看测试程序:
这段程序也比较好理解,首先我创建了一个A类,在A类里面有private,protected, public的成员变量int i,k,l。
然后测试程序用B类继承了A类,并且在B类的构造函数里面初始化了A类的成员变量,那么在A类的参数初始化表我对private,protected, public的变量赋予了不同的数值,应该分别是i(2),k(3),l(4),以便后期进行查验。
在B类自身的构造函数里面,将成员变量j初始化成了(1)。
好了,来到main函数里面的测试程序,我用一个int的指针指向对象的内存,并且用这个指针查看B类对象的内存内容,结果如下所示:
可以看到,是先输出了A类的成员变量,最后才是输出了B类的成员变量,那么也是可以从中看出子类的对象里面是会包含父类的private,protected, public的成员变量。
还可以看出父类的成员变量是排在子类的成员变量前面的,如下面这个结构图所示:
继承关系
那么我们来看子类对于private,protected, public的继承关系。
让我们来看看测试例程:
我在B类的构造函数里面进行了A类的成员变量的输出,结果如下所示:
可以看到正常输出了,现在取消注释:
可以看到编译器报错了,说明private在子类中是存在,但是不能访问的。
那让我们来看看,能否在B类的外面,也就是通过对象调用父类的protected和public的成员变量呢?测试看看:
可以看到,public可以正常输出,但是protected就会报错:
这说明,public的继承度最高,protected其次,private最低。
以上是关于[c++07]成员变量在继承中的约束的主要内容,如果未能解决你的问题,请参考以下文章