首页 > 代码库 > 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.数据的共享与保护