C++实例 静态成员的引入——静态数据成员的定义、调用,静态成员函数的实现、调用。

来源:互联网 发布:php项目开发实战入门 编辑:程序博客网 时间:2024/05/17 19:19

代码描述:实现客户机(CLIENT)类。定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。


#include<iostream>
using namespace std;
class Client
{
public:
Client();
~Client();
void show();
static void ChangeServerName();


private:
static char  ServerName[10];
static int ClientNum;
};


int Client::ClientNum=0;  

char Client::ServerName[10]="abcd"; 


/*静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。
在一个对象里给它赋值,其他对象里的该成员也会发生变化。
为了避免混乱,所以不可在类体内进行赋值。
静态成员的值对所有的对象是一样的。静态成员可以被初始化,但只能在类体外进行初始化。
一般形式:
    数据类型类名::静态数据成员名=初值
    注意:不能用参数初始化表对静态成员初始化。一般系统缺省初始为0*/


Client::Client()
{
cout << "the Client is called";                       
ClientNum++;
}


Client::~Client()
{
cout << "" << endl;                        
ClientNum--;
}
void Client::ChangeServerName() 
{/*静态成员函数在类外实现时候无须加static关键字,否则是错误的。
    若在类的体外来实现上述的那个静态成员函数,不能加static关键字,
这样写就可以了:
     int test::Getnum()
     {
       .........
     }*/ 
cout << "please enter ServerName:"<<endl;                      
cin >> ServerName; 
}



void Client::show() 
{
cout << "the ServerName is :";      
cout << ServerName << endl;      
cout << "the ClientNum is :";      
cout << ClientNum << endl;      
cout << endl;
}
int main(void)
{
/*关于函数的调用,静态函数可以像普通成员函数一样
通过对象进行访问,也可以像Client::ChangeServerName()进行访问,
而普通成员函数,只能用通过对象的方式进行访问*/

Client::ChangeServerName();  
Client a;  
a.show();   
Client::ChangeServerName();  
Client b;  
b.show();   
Client::ChangeServerName();  
Client c;  
c.show();
}

阅读全文
0 0