您的位置:首页 > 编程语言 > C语言/C++

C++继承方式梳理

2016-07-27 15:33 295 查看
1. 首先看一个类对象(也就是外部)对于 类成员变量的处理:

1. 对于成员变量,public类型的可以被内部和外部访问,protected和private是一样的,都是只能被内部访问。也就是当区分一个类对象和类内部是否可以访问他本身的成员变量(包括继承来的)的时候,只要看是不是public就可以了。也就是说对于一个对象,他能不能访问自己的成员变量只看这个变量是不是public,是就可以访问,不是就不可以访问。

2.接着看继承方式:

1. public继承会保持基类的成员变量访问权限不变,那么对于一个继承来的public基类成员变量,这个派生类自己的对象肯定是可以访问的,因为这个变量在这个派生类中是Public,这个派生类内部的成员函数也是可以访问的。对于继承来的protected基类成员变量,这个派生类自己的对象是无法访问的(参见上面外部访问的条件),但是派生类中的成员函数是可以访问的。对于继承来的private基类成员变量,这个类的内部和外部都是无法访问的,因为这个类是基类私有的。可以看出内部能不能访问,其实只看是不是私有,如果原来不是私有的,那么继承后也就可以访问,外部能不能访问,只看共有,现在是公有就能访问。

2. protected继承会将public和proteced变为protected的继承变量,对于内部来说,原来是protected和public的基类成员变量都可以访问,对于外部来说现在类里面继承来的成员变量里没有Public类型的了,所有没有任何变量可访问。

3.privated继承会将所有成员变量变为private的继承变量,这样一来对于内部访问来说,依旧是protected 和public的基类成员变量可以访问,对于外部来说由于依旧没有Public类型的基类成员继承变量,所有全都不可以访问。

3.总结,派生类对象对于成员变量的访问(包括自身的成员变量)看继承后还有哪些是public,只能访问public类型的。

      派生类内部对于成员变量的访问,如果是自己的成员变量那么可以访问所有类别,如果是继承来的那么就看继承前是不是private。

外看现公有,内看曾私有

对象访问就看他在正被访问的类里是不是共有,成员函数访问就看这个变量继承前是不是私有。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: