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。
外看现公有,内看曾私有
对象访问就看他在正被访问的类里是不是共有,成员函数访问就看这个变量继承前是不是私有。
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。
外看现公有,内看曾私有
对象访问就看他在正被访问的类里是不是共有,成员函数访问就看这个变量继承前是不是私有。
相关文章推荐
- C/C++求职宝典21个重点笔记(常考笔试面试点)
- 杂——C++
- VC++编程实现修改EXE文件图标
- C++ text file process summary
- #尺取法 --由codeforces 701C They are EveryWhere为例
- C++:IO流条件状态
- Leetcode 59. Spiral Matrix II (Medium) (cpp)
- c++ 内存管理
- C++拷贝构造函数详解
- 错误:fatal error C1189: #error : The C++ Standard Library forbids macroizing keywords. Enable warning
- 5-31 笛卡尔树
- Leetcode 54. Spiral Matrix (Medium) (cpp)
- 一个项目调用另一个项目中的函数
- 转载一份C++线程池的代码,非常实用
- eclipse3.5(C++&Java)使用教程
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题
- Self Summary: C++函数返回引用和指针的问题,局部对象与new对象的问题