类的静态数据成员 和 成员函数 说明

类的静态成员是属于类的而不是属于哪一个对象的,所以静态成员的使用应该是类名称加域区分符加成员名称的
ep:
 int ClassName::val=20;(初始化)
且写在主函数调用前 不能在类声明中初始化

 


静态成员函数的特性类似于静态成员的使用,同样与对象无关,调用方法为类名称加域区分符加成员函数名称

静态成员函数由于与对象无关系,所以在其中是不能对类的普通成员进行直接操作的

静态成员函数与普通成员函数的差别就在于缺少this指针,没有这个this指针自然也就无从知道name是哪一个对象的成员了
ep:
ClassName::sum();

 

 


////////////////////////////////////////////////
//
//ep
//
////////////////////////////////////////////////
#include <iostream>
using namespace std;

class Internet
{
public:
Internet(char *name,char *address)
{
strcpy(Internet::name,name);
strcpy(Internet::address,address);
count++;
}
static void Internet::Sc()//静态成员函数
{
cout<<count<<endl;
}
Internet &Rq();
public:
char name[20];
char address[20];
static int count;//这里如果写成static int count=0;就是错误的
};

Internet& Internet::Rq()//返回引用的成员函数
{
return *this;
}

int Internet::count = 0;//静态成员的初始化
void vist()
{
Internet a1("中国软件开发实验室","www.cndev-lab.com");
Internet a2("中国软件开发实验室","www.cndev-lab.com");
}
void fn(Internet &s)
{
cout<<s.Rq().count;
}
void main()
{
cout<<Internet::count<<endl;//静态成员值的输出
vist();
Internet::Sc();//静态成员函数的调用
Internet b("中国软件开发实验室","www.cndev-lab.com");
Internet::Sc();
fn(b);
cin.get();
}

 

 

//********************************//
static void Internet::Sc()//静态成员函数
{
cout<<name<<endl;//错误  静态成员函数由于与对象无关系,所以在其中是不能对类的普通成员进行直接操作的
cout<<count<<endl;
}
//********************************//

posted @ 2007-03-19 18:00  Edward Xie  阅读(205)  评论(0)    收藏  举报