静态数据成员由static关键字修饰,必须定义为私有成员,不能从类外访问,基本格式是static+数据类型名+变量名;然而他的初始化方法也与别的不同,是由:数据类型名 类名::静态数据成员名=值;静态数据成员的格式:类名::静态数据成员名。
#include <iostream.h>
class StaticTest1
{
int x;
static int count;
public:
StaticTest1(int a)
{
x=a;
count++;
}
void printvalue()
{
cout<<"实例变量x="<<x<<endl;
cout<<"类变量count="<<count<<endl;
}
};
int StaticTest1::count=0;//在类外进行初始化,这和count的访问权限无关
void main()
{
StaticTest1 st1(1);
cout<<"创建第一个对象后对象1:"<<endl;
st1.printvalue();
StaticTest1 st2(2);
cout<<"创建第二个对象后对象1:"<<endl;
st1.printvalue();
cout<<"创建第二个对象后对象2:"<<endl;
st2.printvalue();
}
静态函数的使用格式为:类名::静态函数名([实参列表]);特别注意:
静态成员函数只能直接访问静态数据成员、其他静态成员函数,不能直接使用类中的实例变量和其他非静态的成员函数。
静态成员函数和一般成员函数一样也有访问权限限制,私有静态成员函数不能在类体外访问,但是,静态成员函数和静态数据成员可以由任意访问权限的其他函数访问。
#include <iostream.h>
class StaticTest2
{
int x;
static int count;
public:
StaticTest2(int a)
{
x=a;
}
static void setValue()
{
count++;
}
void printvalue()
{
cout<<"实例变量x="<<x<<endl;
cout<<"静态变量count="<<count<<endl;
}
};
int StaticTest2::count=0;
void main()
{
StaticTest2 st(1);
st.printvalue();
cout<<"调用静态方法后:"<<endl;
StaticTest2::setValue();
st.printvalue();
}
这是哦我写的关于静态函数的理解,可能还不太懂,还需要更深入地理解!!!所以我要good good study!!day day up!!!