C++ Primer Chapter 15-4
2017-04-23 15:43
190 查看
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:名字查找先与类型检查。一旦查找成功就不在查找了
无论如何都是 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:名字查找先与类型检查。一旦查找成功就不在查找了
相关文章推荐
- C++ Primer Chapter 15-2
- C++ Primer Chapter 15-6
- C++ Primer Chapter 15-1
- C++ Primer Chapter 15-3
- C++ Primer Chapter 15-5
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第七章(chapter 7) 1-5
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第七章(chapter 7) 6-10
- C++ Primer Chapter 11 generic algorithm
- C++ Primer Chapter 10 关联容器之map
- C++ Primer Chapter 1
- c++字符串数组与字符串指针 c++ primer plus chapter 7 复习题8 的一点小问题
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第六章(chapter 6) 5-9
- 句柄类和继承 , 指针类的使用 C++ Primer xt_15_35
- C++ primer 5 笔记1 chapter 1 begin
- C++ Primer Plus Chapter 2 2.6复习题答案
- C++ Primer::Chapter 7: Defined Terms
- C++ primer plus(sixth edition) 编程练习答案(answers for programing exercises)第八章(chapter 8) 1-4
- C++ Primer Chapter 9 循环将list元素逆序输出
- Class Hierarchies(Chapter 15 of The C++ Programming Language)
- C++ Primer Chapter 10 关联容器之容器的综合应用:文本查询程序