数据共享与保护 多文件结构样例

来源:互联网 发布:地牢猎手5淘宝刷钻 编辑:程序博客网 时间:2024/06/05 05:31


//多文件结构, 三部分

//头文件 预编译

实现客户机(CLIENT)类:
·声明字符型静态数据成员ServerName,保存其服务器名称
·整型静态数据成员ClientNum,记录已定义的客户数量
·定义静态函数ChangServerName()改变服务器名称.

在头文件client.h中声明类,
在文件client.cpp中实现,
在文件test.cpp中测试这个类,
观察相应的成员变量取值的变化情况.


声明部分

//根据要求头文件只给出类的声明即可,也没有主函数#include "stdafx.h"#includeusing namespace std;#ifndef CLIENT_H_//↑十分重要:为了避免重复包含头文件,常用这种形式编译预处理#define CLIENT_H_//构造函数呢?//可能是只是声明的缘故吧class Client {//静态!static char ServerName;static int ClientNum;public:static void ChangeServeName(char name);static int getClientNum();};#endif // !CLIENT_H_,配合"ifndef"进行预处理


实现部分

#include "stdafx.h"//包含定义#include "client.h"//都是静态数据成员,引用时注意"类名::"来修饰void Client::ChangeServeName(char name){Client::ServerName = name;Client::ClientNum++;}int Client::getClientNum(){return Client::ClientNum;}//一些其他的注意事项://静态数据成员必须在类外初始化. //一般形式:数据类型类名::静态数据成员名=初值//不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。


测试部分

#include "stdafx.h"#include#include "client.h"using namespace std;//单独初始化!int Client::ClientNum = 0;char Client::ServerName = 'a';int main(){Client c1;c1.ChangeServeName('a');cout << c1.getClientNum << endl;Client c2;c2.ChangeServeName('b');cout << c2.getClientNum() << endl;return 0;}

最后配合

http://www.cnblogs.com/dongzhiquan/archive/2011/01/09/1994520.html








0 0
原创粉丝点击