静态成员函数和数据成员

静态数据成员由static关键字修饰,必须定义为私有成员,不能从类外访问,基本格式是static+数据类型名+变量名;然而他的初始化方法也与别的不同,是由:数据类型名 类名::静态数据成员名=值;静态数据成员的格式:类名::静态数据成员名。

#include<iostream.h>

class StaticTest1

{

intx;

staticintcount;

public:

StaticTest1(inta)

{

x=a;

count++;

}

voidprintvalue()

{

cout<<"实例变量x="<<x<<endl;

cout<<"类变量count="<<count<<endl;

}

};

intStaticTest1::count=0;//在类外进行初始化,这和count的访问权限无关

voidmain()

{

StaticTest1st1(1);

cout<<"创建第一个对象后对象1:"<<endl;

st1.printvalue();

StaticTest1st2(2);

cout<<"创建第二个对象后对象1:"<<endl;

st1.printvalue();

cout<<"创建第二个对象后对象2:"<<endl;

st2.printvalue();

}

静态函数的使用格式为:类名::静态函数名([实参列表]);特别注意:

  静态成员函数只能直接访问静态数据成员、其他静态成员函数,不能直接使用类中的实例变量和其他非静态的成员函数。

  静态成员函数和一般成员函数一样也有访问权限限制,私有静态成员函数不能在类体外访问,但是,静态成员函数和静态数据成员可以由任意访问权限的其他函数访问。

#include<iostream.h>

classStaticTest2

{

intx;

staticintcount;

public:

StaticTest2(inta)

{

x=a;

}

staticvoidsetValue()

{

count++;

}

voidprintvalue()

{

cout<<"实例变量x="<<x<<endl;

cout<<"静态变量count="<<count<<endl;

}

};

intStaticTest2::count=0;

voidmain()

{

StaticTest2st(1);

st.printvalue();

cout<<"调用静态方法后:"<<endl;

StaticTest2::setValue();

st.printvalue();

}

这是哦我写的关于静态函数的理解,可能还不太懂,还需要更深入地理解!!!所以我要good good study!!day day up!!!

你可能感兴趣的:(函数)