C++语言程序设计实验答案_数据的共享与保护

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验05 数据的共享与保护(2学时)

(第5章数据的共享与保护)

一、实验目的

二、实验任务

5_1 运行下面的程序,观察变量x、y的值。

int y=200;

cout<<"x="<

cout<<"y="<

}

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();

(2) 类实现程序文件client.cpp

(3) 主函数文件lab5_2.cpp

client::ChangeServerName('B');

client a;//增加一个客户

a. showServerName();//对象名引用静态成员函数

a. showClientNum();

{

client b; //增加一个客户

b. showServerName();

b. showClientNum();

}//减少一个客户

client::showServerName();

client::showClientNum();

}

(4) 运行结果

附:第5章 数据的共享与保护

5.1 标识符的作用域与可见性P146

5.1.1 作用域

作用域是一个标识符在程序正文中有效的区域。 C++的作用域有:

函数原型作用域、块作用域(局部作用域)、类作用域、文件作用域。

1. 函数原型作用域

在函数原型声明时形式参数的作用范围。

例,

double Area(double radius);

其中标识符radius 的作用(或称有效)范围在形参列表的左、右括号之间,称标识符radius 的作用域是函数原型作用域。

由于在函数原型的形参表中起作用的只是形参类型,标识符并不起作用,可省略。

2. 局部作用域(块作用域) 例:

形参作用域:从形参列表中的声明处开始,到整个函数体结束处止。 b 和c 都具有块作用域,是不同的块作用域。 块是一对大括号括起来的一段程序。

a 的作用域

的作用域 b 的作用域

此例,函数体是一个块,if语句后的分支体又是一个较小的块,二者是包含关系。

在块中声明的标识符,其作用域从声明处开始,一直到块结束的大括号为止。

具有块作用域的变量也称为局部变量。

3. 类作用域

类是一组有名成员的集合,类X的成员m具有类作用域,对m的访问方式如下:

(1) 若在X的成员函数中无同名的局部作用域标识符,则在该函数内可访问成员m。

(2) 通过表达式x.m或X::m。这正是程序中访问对象成员的最基本方法。

(3) 通过prt->m这样的表达式,其中prt为指向X类的一个对象的指针。

4. 命名空间作用域

命名空间

大型程序通常由不同模块构成,不同模块中的类和函数之间可能发生重名,将引发错误。

命名空间可以解决类名、函数等的命名冲突。

命名空间语法形式:

特殊的命名空间

_ 全局命名空间:默认的命名空间

_ 匿名命名空间:对每个源文件是唯一的

命名空间作用域

一个命名空间确定了一个命名空间作用域

引用其它命名空间作用域中的标识符

_ 命名空间名::标识符名

_ 例:声明一个SomeClass型的对象

SomeNs::SomeClass obj1;

将其它命名空间作用域的标识符暴露于当前作用域

_ 对指定标识符

using 命名空间名::标识符名;

_ 对所有标识符

using namespace命名空间名;

例5-1中所声明的全局变量就具有文件作用域,它们在整个文件中都有效。

例5-1 作用域实例。

相关文档
最新文档