5.数据的共享和保护

第五章 数据的共享和保护

5.1标识符的作用域和可见性

可见性:标识符是否可以引用的问题

作用域:是标识符的有效范围

① 函数原型作用域:函数原型中的参数

② 局部作用域:从声明处开始,到块结束的右大括号

③ 类作用域:类的成员具有类作用域

命名空间作用域(具有命名空间作用域的变量也称为全局变量

5.2对象的生存期

①静态生存期:

·与程序的运行期相同

·在命名空间作用域中声明的对象具有

·在函数内部声明的静态生存期对象要加static

②动态生存期:

·局部作用域中声明的对象具有(局部生存期对象)

5.3类的静态成员

·用static声明

·该类的所有对象维护该成员的同一个拷贝

·必须在类外定义和初始化,用::指明所属类

静态成员函数:

·类外代码可以使用类名和作用域操作符::来调用静态成员函数

·只能引用属于该类的静态数据成员或静态成员函数

5.4类的友元

①友元函数:是在类声明中由friend修饰说明的非成员函数

在它的函数体中,能通过对象名访问private和protected成员

1. 普通函数

2. 其他类的成员函数(可以通过它访问另一个类中的成员)

②友元类:若类B为类A的友元,则类B的所有成员都能访问类A的private和protected成员

注意:友元关系:①不能传递②单向③不被继承

5.5共享数据的保护

①常对象 :例:const A a(3,4);

数据成员的值,在对象的整个生存期间不能被改变,必须进行初始化,且不能被更新

②用const修饰的类成员:常成员函数 、 常数据成员 (const可以区分重载函数)

常成员函数不能更新目的对象的数据成员,通过常对象只能调用常成员函数,其他函数不行

③常引用

被引用的对象不能被更新,可以绑定到 普通对象 或 常对象(非const引用不能)。

原文地址:https://www.cnblogs.com/GraceSkyer/p/6230733.html