.
实验05 数据的共享与保护(2学时)
(第5章 数据的共享与保护)
一、实验目的
(1) 观察程序运行中变量的作用域、生存期和可见性。 (2) 学习类的静态成员的使用。 (3) 学习多文件结构在C++程序中的使用。 二、实验任务
5_1 运行下面的程序,观察变量x、y的值。
//lab5_1.cpp #include . 5_2 实现客户机(CLIENT)类。 声明字符型静态数据成员ServerName,保存其服务器名称;声明整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中声明类,在文件client.cpp中实现,在文件lab5_2.cpp中测试这个类,观察相应的成员变量取值的变化情况。 三、实验步骤 1.(验证)运行lab5_1.cpp程序,观察程序输出。 全局变量的作用域为文件作用域,在整个程序运行期间有效,但如果在局部模块中声明了同名的变量,则在局部模块中,可见的是局部变量,此时,全局变量不可见; 而局部变量的生存期只限于相应的程序模块中,离开相应的程序模块,局部变量x、y就不再存在,此时同名的全局变量重新可见。 程序名:lab5_1.cpp。 ★ 程序的运行结果: 2.(编程)实现客户机(CLIENT)类。 新建一个空的项目lab5_2,添加头文件client.h,在其中声明类CLIENT,注意使用编译预处理命令;再添加源程序文件client.cpp,在其中实现CLIENT类,注意静态成员变量 的使用方法;再添加文件lab5_2.cpp,在其中定义main()函数,测试CLIENT类,观察 相应的成员变量取值的变化情况。 提示: 访问一台服务器的客户总数。 静态成员为类的属性,为所有的类的对象共同拥有。 再定义两个静态成员函数,分别显示服务器名和客户总数。 构造函数用于增加一个客户,析构函数用于减少一个客户。 定义一个对象,再定义第二个对象,然后减少一个对象。 参考程序输出结果: . . ★ 程序及运行结果: (1) 类声明头文件client.h //client.h #ifndef CLIENT_H #define CLIENT_H //其中的静态成员为类的属性,为所有的类的对象共同拥有 class client{ public: client(); ~client(); static void ChangeServerName(char ss);//改变服务器名称 static void showServerName(); static void showClientNum(); private: static char ServerName;//保存服务器名,引用性说明 static int ClientNum;//记录已定义的客户(即对象)数量,引用性说明 }; #endif (2) 类实现程序文件client.cpp //client.cpp #include . #include . . 附:第5章 数据的共享与保护 5.1 标识符的作用域与可见性P146 5.1.1 作用域 作用域是一个标识符在程序正文中有效的区域。 C++的作用域有: 函数原型作用域、块作用域(局部作用域)、类作用域、文件作用域。 1. 函数原型作用域 在函数原型声明时形式参数的作用围。 例, double Area(double radius); 其中标识符radius的作用(或称有效)围在形参列表的左、右括号之间,称标识符radius的作用域是函数原型作用域。 由于在函数原型的形参表中起作用的只是形参类型,标识符并不起作用,可省略。 2. 局部作用域(块作用域) 例: void fun(int a){ int b=a; cin>>b; if(b>0){ int c; b的作用域 ... c的作用域 } } a的作用域 形参作用域:从形参列表中的声明处开始,到整个函数体结束处止。 b和c都具有块作用域,是不同的块作用域。 块是一对大括号括起来的一段程序。 此例,函数体是一个块,if语句后的分支体又是一个较小的块,二者是包含关系。 在块中声明的标识符,其作用域从声明处开始,一直到块结束的大括号为止。 具有块作用域的变量也称为局部变量。 3. 类作用域 类是一组有名成员的集合,类X的成员m具有类作用域,对m的访问方式如下: .
相关推荐: