C++ Primer Chapter 15-4
来源:互联网 发布:mac os dmg镜像下载 编辑:程序博客网 时间:2024/05/29 12:30
1:对于这些归根结底是为了保护数据, private 无论如何都是 private,因为从一开始就是 private,则至始至终都是要保护其数据的对外不可见性, protect 只有在后续 private 继承要求变为 private 时,才会改变其属性,public 则无论何时何种继承就会变为何种类型。反观这些变化,会发现只能从 public 到public, protect,private; protect 到 protect ,private ; private 到 private; 也就是访问属性只可能越来越苛刻,只会升级,不会降级。
2:出现继承和派生之后会出现三种类的用户:普通类使用者,基类设计者(实现类),派生类设计者(实现类)。
基类中的 protect 成员可以为基类设计者直接使用,也可以为派生类设计者直接使用;
基类中的 private 成员可以为基类设计者直接使用,派生类设计者不可以直接使用。
3:基类的实现如果希望派生类设计时可以用,则应声明为 protect ,如果不希望派生类设计可以用,声明为 private。
4:友元不具有传递性,也不具有继承性。
5:一个类 Base 的友元可以访问其所有成员,包括 在 Base 的派生类中 属于 Base的部分数据成员,其友元也可以访问。虽然这看起来很怪,但是仔细考虑 一个类的成员的访问属性只有该类自己控制,在派生类中的继承而来的成员也由该被继承的类控制,而不由派生类控制。
6:虽然在继承的关系中我们希望保护数据的安全性,像 1 中所说那样,但是有时候我们的确需要改变一个成员的访问属性,那么可以人为强制用 using 声明。 在对应的访问说明符下 using base::mem; 这样一句话,就可以改 mem 在派生类中为特定访问属性
注:派生类只可以对其可以访问的名字提供 using 声明。如果自己都访问不了怎么保证其用户可以访问。本质还是保护数据。
7:struct 和 class 声明的类的唯一差别就是默认的成员属性和继承属性,struct 默认为 public,class 默认为 private
8:所有关于访问的属性问题,归根结底是为了保护数据的安全性和程序的安全性。
9:派生类的作用域是嵌套在基类的作用域之内的。而且一直嵌套到最顶层。
10:即使动态类型与静态类型不一致,但是决定我们能否访问一个成员或者变量的决定权在与静态类型。
11:由于作用域的嵌套关系,那么派生类中的同名成员将会隐藏基类中的成员。但是我们可以用作用域运算符来使用隐藏的基类成员。
12:名字查找先与类型检查。一旦查找成功就不在查找了
0 0
- C++ Primer Chapter 15-4
- C++Primer-Function chapter
- C primer plus -- Chapter 2
- C++ Primer Chapter 4
- C++ Primer Chapter 15-1
- C++ Primer Chapter 15-2
- C++ Primer Chapter 15-3
- C++ Primer Chapter 15-6
- C++ Primer Chapter 15-5
- C++ Primer Chapter 7-4
- C++ Primer Chapter 9-4
- C++ Primer Chapter 10-4
- C++ Primer Chapter 13-4
- C++ Primer Chapter 14-4
- c primer plus Chapter 14 p383
- 《C primer plus》笔记--Chapter 1
- C++Primer Chapter One学习笔记
- c primer plus 4th edition Programing Exercises answer(chapter 6)
- Spring事务传播性与隔离级别
- Android 6.0: 动态权限管理的解决方案
- C++ Primer Chapter 15-3
- 解决ubuntu14.04 启动时卡在 Waiting for network configuration...
- 消息队列使用的四种场景介绍
- C++ Primer Chapter 15-4
- 泛型
- 51Nod 1135-原根(快速求解一个素数的原根)
- android studio checkbox复选框的选中,并显示打印出来
- jquery mobile 弹窗(二)
- C++ Primer Chapter 15-6
- ajax处理跨域有几种方式?实现原理是什么?
- Couldn't Copy Base System 错误处理办法
- Linux kernel boot