C++中的static关键字是从C中继承的。
(1)在类中的使用static关键字声明的变量和函数不属于该类的任何一个具体的对象,而是属于这个类的所有对象。
对象A和B对可以对myclass中的整型变量i进行修改,但是修改的动作是针对对象A和B的。也就是说A.i==B.i是true的。
例如:
class
myclass
{
private :
static int i;
public :
static void func();
};
int main()
{
myclass A,B;
...
...
}
{
private :
static int i;
public :
static void func();
};
int main()
{
myclass A,B;
...
...
}
(2)静态成员变量和静态成员函数是可以通过类名直接进行访问的。类中的静态成员函数只能够访问该类的静态的成员变量。
myclass::i;
myclass::func();
(3)在类中使用static声明成员变量和成员函数后,在定义时不需要再次适用static。但是静态成员变量必须在类外进行定义。
例如:
class
myclass
{
private :
static int i;
public :
static void func();
}
int myclass::i;
void myclass::func();
{
private :
static int i;
public :
static void func();
}
int myclass::i;
void myclass::func();
(4)静态数据成员的定义不能放在头文件中,必须放在源文件中。如果有多个源文件,只能选择其中的一个进行放置,不能同时放置在多个源文件中。