- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验 05 数据的共享与保护( 2 学时)
(第 5 章 数据的共享与保护)
一、实验目的
观察程序运行中变量的作用域、生存期和可见性。
学习类的静态成员的使用。
学习多文件结构在 C++程序中的使用。
二、实验任务
5_1 运行下面的程序,观察变量 x、 y 的值。
. endl;
cout x= xendl;
cout y= yendl;
cout 在 main() 中求 x 和 y 的值 ... endl;
int x=10,y=20;
cout x= xendl;
cout y= yendl;
cout 进入函数 fn1()... endl;
fn1();
cout 返回 main() endl;
cout x= xendl;
cout y= yendl;
return 0;
}
void fn1(){
int y=200;
cout x= xendl;
cout y= yendl;
}
5_2 实现客户机 (CLIENT) 类。
声明字符型静态数据成员 ServerName,保存其服务器名称;声明整型静态数据成员
ClientNum ,记录已定义的客户数量;定义静态函数 ChangeServerName() 改变服务器名称。
在头文件中声明类,在文件中实现,在文件中测试这个类,观察相应的成员变量取值的变化情况。
三、实验步骤
(验证)运行程序,观察程序输出。
全局变量的作用域为文件作用域,在整个程序运行期间有效,但如果在局部模块中声明了同名的变量,则在局部模块中,可见的是局部变量,此时,全局变量不可见;
而局部变量的生存期只限于相应的程序模块中,离开相应的程序模块,局部变量 x、 y 就不再存在,此时同名的全局变量重新可见。
程序名:。
★ 程序的运行结果:
(编程)实现客户机 (CLIENT) 类。
新建一个空的项目 lab5_2 ,添加头文件,在其中声明类 CLIENT,注意使用编译预处理
命令;再添加源程序文件,在其中实现 CLIENT 类,注意静态成员变量的使用方法;再添加
文件,在其中定义 main() 函数,测试 CLIENT 类,观察
相应的成员变量取值的变化情况。
提示:
访问一台服务器的客户总数。
静态成员为类的属性,为所有的类的对象共同拥有。
再定义两个静态成员函数,分别显示服务器名和客户总数。
构造函数用于增加一个客户,析构函数用于减少一个客户。
定义一个对象,再定义第二个对象,然后减少一个对象。
参考程序输出结果:
★ 程序及运行结果:
类声明头文件
showServerName();showClientNum();
{
client b; showServerName();
b. showClientNum();
}
5.1.1 函数原型作用域
在函数原型声明时形式参数的作用范围。
例,
double Area(double radius);
其中标识符 radius 的作用(或称有效)范围在形参列表的左、右括号之间,称标识符 radius 的作用域是 函数原型作用域 。
由于在函数原型的形参表中起作用的只是形参 型, 符并不起作用,可省略。
局部作用域( 作用域)例:
void
fun( int
a){
int
b=a;
cinb;
b 的作用域
a 的作用域
if
(b0){
int c;
c 的作用域
...
}
形参作用域:从形参列表中的声明 开始,到整个函数体 束 止。
b 和 c 都具有 作用域,是不同的 作用域。
是一 大括号括起来的一段程序。
此例,函数体是一个块, if 语句后的分支体又是一个较小的块,二者是包含关系。
在 中声明的 符,其作用域从声明 开始,一直到 束的大括号
止。
具有 作用域的 量也称 局部 量 。
作用域
是一 有名成 的集合, X 的成 m具有 作用域, m的 方式如下:
若在 X 的成 函数中无同名的局部作用域 符, 在 函数内可 成 m。
通 表达式或 X::m。 正是程序中 象成 的最基本方法。
通 prt-m 的表达式,其中 prt 指向 X 的一个 象的指 。
命名空 作用域命名空
大型程序通常由不同模 构成,不同模 中的 和函数之 可能 生重名,
将引 。
命名空 可以解决 名、函数等的命名冲突。
命名空 法形式:
namespace 命名空 名 {
命名空 内的各种声明 ( 函数声明、 声明、?? )
}
例
namespaceSomeNs {
class SomeClass { ... };
}
特殊的命名空间
_ 全局命名空间 :默认的命名空间
_ 匿名命名空间 :对每个源文件是唯一的
命名空间作用域
一个命名空间确定了一个命名空间作用域
引用其
文档评论(0)