类的静态数据成员 和 成员函数 说明
类的静态成员是属于类的而不是属于哪一个对象的,所以静态成员的使用应该是类名称加域区分符加成员名称的
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;
}
//********************************//


浙公网安备 33010602011771号