实验05 数据的共享与保护(实验参考).doc_第1页
实验05 数据的共享与保护(实验参考).doc_第2页
实验05 数据的共享与保护(实验参考).doc_第3页
实验05 数据的共享与保护(实验参考).doc_第4页
实验05 数据的共享与保护(实验参考).doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+程序设计课内实验谭毓银实验05 数据的共享与保护(2学时)(第5章 数据的共享与保护)一、实验目的(1) 观察程序运行中变量的作用域、生存期和可见性。(2) 学习类的静态成员的使用。(3) 学习多文件结构在C+程序中的使用。二、实验任务5_1运行下面的程序,并通过Debug观察变量的值。/5_1.cpp#include using namespace std;int i;namespace Nsint j;void main()i=5;Ns:j=6;using namespace Ns;int i;i=7;couti=iendl;coutj=jendl;couti=iendl;5_2 运行下面的程序,并通过Debug观察变量的值。/5_2.cpp#includeusing namespace std;int i = 1; / i 为全局变量,具有静态生存期。void other() static int a = 2; static int b; / a,b为静态局部变量,具有全局寿命,局部可见。 /只第一次进入函数时被初始化。 int c = 10; / C为局部变量,具有动态生存期, /每次进入函数时都初始化。 a += 2; i += 32; c += 5; cout-OTHER-n; cout i: i a: a b: b c: cendl; b = a;int main() static int a;/ 静态局部变量,有全局寿命,局部可见。 int b = -10; / b, c为局部变量,具有动态生存期。 int c = 0;cout -MAIN-n; cout i: i a: a b: b c: cendl; c += 8; other(); cout-MAIN-n; cout i: i a: a b: b c: cendl; i += 10; other(); return 0;5_3 运行下面的程序,并通过Debug观察变量的值。/5_3.cpp#includeusing namespace std;class Clock /时钟类定义public:/外部接口Clock();void setTime(int newH, int newM, int newS); /三个形参均具有函数原型作用域void showTime();private:/私有数据成员int hour, minute, second;Clock:Clock() : hour(0), minute(0), second(0) /构造函数void Clock:setTime(int newH, int newM, int newS) /三个形参均具有局部作用域hour = newH;minute = newM;second = newS;void Clock:showTime() cout hour : minute : second endl;Clock globClock;/声明对象globClock, /具有静态生存期,文件作用域int main() /主函数cout First time output: endl;/引用具有文件作用域的对象:globClock.showTime();/对象的成员函数具有类作用域globClock.setTime(8,30,30);Clock myClock(globClock); /声明具有块作用域的对象myClockcoutSecond time output:endl;myClock.showTime();/引用具有块作用域的对象return 0;5_4 运行下面的程序,并通过Debug观察变量的值。(程序输出有错,请找出)/5_4.cpp#include using namespace std;class Pointpublic:Point(int x=0, int y=0) : x(x), y(y) count+; Point(Point &p);int getX() return x; int getY() return y; void showCount() cout Object count=“ count endl; private:int x,y;static int count;Point:Point(Point &p) x = p.x;x = p.y;count+;int Point:count=0; int main() Point a(4,5);coutPoint A:a.getX(),a.getY();a.showCount();Point b(a);coutPoint B:b.getX(),b.getY();b.showCount();return 0;5_5 运行下面的程序,并通过Debug观察变量的值。/5_5.cpp#include using namespace std;class Point /Point类定义public:/外部接口Point(int x = 0, int y = 0) : x(x), y(y) count+; Point(Point &p); Point() count-; int getX() return x; int getY() return y; static void showCount() /静态函数成员 cout Object count = count endl;private:/私有数据成员int x, y;static int count;/静态数据成员声明;Point:Point(Point &p) x = p.x;y = p.y;count+;int Point:count=0;int main() /主函数实现Point a(4,5);/声明对象AcoutPoint A,a.getX(),a.getY();Point:showCount();/输出对象个数Point b(a);/声明对象BcoutPoint B,b.getX(),b.getY();Point: showCount();/输出对象个数return 0;5_6 多文件结构。/Point.hclass Point /Point类定义public:/外部接口Point(int x = 0, int y = 0) : x(x), y(y) count+; Point(const Point &p); Point() count-; int getX()const return x; int getY()const return y; static void showCount();private:/私有数据成员int x, y;static int count;/静态数据成员声明;/Point.cpp#includePoint.h#includeusing namespace std;int Point:count=0;Point:Point(const Point &p):x(p.x),y(p.y)count+;void Point:showCount() /静态函数成员 cout Object count = count endl;/p5_10.cpp#includePoint.h/ includePoint.cpp#includeusing namespace std;int main()Point a(4,5);/声明对象coutPoint A,a.getX(),a.getY();Point:showCount();/输出对象个数Point b(a);/声明对象coutPoint B,b.getX(),b.getY();Point: showCount();/输出对象个数return 0;5_7 实现客户机(CLIENT)类。声明字符型静态数据成员ServerName,保存其服务器名称;声明整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中声明类,在文件client.cpp中实现,在文件lab5_7.cpp中测试这个类,观察相应的成员变量取值的变化情况。三、实验报告(编程)实现客户机(CLIENT)类。新建一个空的项目lab5_7,添加头文件client.h,在其中声明类CLIENT,注意使用编译预处理命令;再添加源程序文件client.cpp,在其中实现CLIENT类,注意静态成员变量的使用方法;再添加文件lab5_7.cpp,在其中定义main()函数,测试CLIENT类,观察 相应的成员变量取值的变化情况。提示:访问一台服务器的客户总数。静态成员为类的属性,为所有的类的对象共同拥有。再定义两个成员函数,分别显示服务器名和客户总数。构造函数用于增加一个客户,析构函数用于减少一个客户。定义一个对象,再定义第二个对象,然后减少一个对象。参考程序输出结果: 程序及运行结果:(1) 类声明头文件client.h/Client.hclass Clientpublic:Client();Client(char cname);Client(Client &c1);Client();void setClientName(char cname);char getClientName();static void ChangeServerName(char sname);static char ShowServerName();static void ShowClientCount();private:char ClientName;static char ServName;static int Count;(2) 类实现程序文件client.cpp/Client.cpp#include Client.h#include using namespace std;char Client:ServName=A;int Client:Count=0;Client:Client()Count+;/cout构造了一个Clientendl;Client:Client(char sname):ClientName(sname)Count+;/cout构造了一个Clientendl;Client:Client(Client &c1):ClientName(c1.ServName)Count+;/cout复制构造了一个Clientendl;Client:Client()Count-;/cout析构了一个Clientendl;void Client:setClientName(char cname)ClientName=cname;char Client:getClientName()return ClientName;void Client:ChangeServerName(char sname)ServName = sname;char Client:ShowServerName()return ServName;void Client:ShowClientCount()cout客户总数:Countendl;(3) 主函数文件lab5_2.cpp/Project.cpp#include Client.h#include using namespace std;int main()cout服务器名:Client:ShowServerName()endl;Client:ShowClientCount();Client:Ch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论