OOPCPP

Learn C++ Programming Language

This project is maintained by cugwhp

第五章 数据共享与保护

1. 内容提纲

本章的内容是在上一章类与对象的基础上展开讨论的。我们说对象的最初步特性就是封装,将若干个变量和函数组合而成,打包而成对象。这样就涉及到对象中的成员变量及对象本身的生命周期。我们知道对象的“出生”是从构造函数开始,“去世”是从析构函数结束。那么对象从何时开始构造,何处开始析构呢?这样的一整个过程就是对象的生命周期。

本章就从作用域开始,详细解释了对象的生存期,何时构造,何时析构。在变量或对象的所属中,有的变量是属于对象的“私产”,不能让别的对象访问和看到;有的对象是”集体财产“,只能被同类别的对象使用,比如:地质大学的图书馆,严格上讲只能让具有图书证的师生使用,而图书馆这个对象,其实只有一个,不可能声明成CugStudent的成员变量,因为没有那么多图书馆,这个时候我们就需要给同一的所有对象分配一个资源,这个资源就可以是静态成员变量;最后是对象的公开接口,比如地大的道路,理论上讲任何人都可以进来走路,这就是”public“变量。

既然对象的成员变量有访问权限,总有这么一些特殊情况。比如非地大的师生想查阅地大图书馆的资料,怎么办?走特殊通道,开个证明就可以进入,这种机制,在面向对象的方面采用friend来实现。但你想,类和对象具有封装特性,通过控制权限,决定哪些变量和函数是给人用的,哪些是不给人用的,如果过度使用friend,那就破坏了类和对象的封装性,所以friend尽量少用。另外还有一个问题,就是friend可否继承。比如你朋友的朋友,和你是朋友吗?显然不可以嘛!要是这样可以的话,你能进地大图书馆,你的朋友也能进,你朋友的朋友都能进,那岂不是谁都可以进去了吗?所有朋友只有一层关系,朋友关系不可以继承。

以上就是这些数据访问权限的控制机制。本节内容提纲如下:

1.4 课件下载

2. References

3. Exercises

  1. 掌握本章例题: 输入源代码,编译程序、调试执行、输出正确
  2. 源代码发邮件cugwhp@qq.com
    • 为实习<2>做好前期准备,准备好上述课后习题的源代码.

返回主目录 | 上一章 类与对象 | 下一章