首页 > 代码库 > 2.数据的共享与保护

2.数据的共享与保护

1.作用域

  - 函数原型作用域:形参范围

  - 局部作用域

  - 类作用域  x.m、x->m、x::m

  - 命名空间作用域:namespace name{}、name::person p、using namespace name;具有命名空间作用域的变量也叫全局变量

2.可见性规则:

  - 标识符要声明在前,引用在后

  - 在同一作用域中,不能声明同名标识符

  - 在没有互相包含关系的不同作用域声明同名标识符互不影响

  - 若在包含关系的作用域中声明同名标识符,则外层在内层不可见

3.对象生存期

  - 静态生存期:对象的生存期与程序运行期相同,则称其具有静态生存期:static声明或在命名空间声明

  - 动态生存期:除上述两种情况外都是动态生存期,诞生于声明点,结束于声明所在块执行完毕时

4.类的静态成员:解决同一个类不同对象和函数的数据共享问题

  - 静态数据成员:访问方式为   类名::标识符

  - 静态函数成员:主要用来访问同一个类中的静态数据成员,维护对象之间共享的数据

5.类的友元

  友元关系提供了不同类或对象的成员函数之间,类的成员函数与一般函数之间进行数据共享的机制

  - 友元函数:在类中用friend修饰的非成员函数,可以在函数体重通过对象名访问类的私有和保护成员

  - 友元类:若A类为B类的友元类,则A类的所有成员函数都是B类的友元函数,都可以访问B类的私有和保护成员

  - 注意:

      * 友元关系不能传递

      * 友元关系单向

      * 友元关系不能被继承

6.共享数据的保护

  - 常对象:其数据成员在对象的整个生存期间不能被改变。必须进行初始化

  - 用const修饰类成员函数:常对象只能调用常成员函数

  - 常数据成员:只能通过初始化列表获得初值

  - 常引用:所引用的对象不能被更新

7.标准C++库:类与组件在逻辑上分为如下6种类型

  - 输入输出类

  - 容器类与ADT(抽象数据类型)

  - 存储管理类

  - 算法

  - 错误处理

  - 运行环境支持

2.数据的共享与保护