在C++ 中,如果要想定义静态变量,需要使用关键字:static。其作用范围在一个文件内,从程序开始时分配空间,结束时释放,且静态变量只有本文件内代码可见,在其他文件中不可见。
下面,我主要讲下static在类成员中需要注意的事项。
1. 在.h头文件中定义 static变量后,需还要在该头文件对应的.cpp文件中定义。static成员不是通过构造函数进行初始化,而是应该定义时进行初始化。例如:
A.h: 对应的cpp:A.cpp
class A double A::a = 0.0; //进行初始化。
{
public: double A::get_a()
static double get_a(); {
private: return a;
static double a; }
};
如不初始化,或者初始化的位置不对,将会出现下面的错误:
error LNK2001: 无法解析的外部符号 "private: static double。
2.类中static 成员变量的使用方法。
A u1;
A *u2 = &u1;
1>aa = u1.a; 2> aa = u2->a; 3> aa = A::a;
3.static 成员函数。
1> 当我们在类的外部定义static 成员函数时,无需重复指定static保留字。如上面类A的定义。
2> static 函数没有this指针。
如有哪写的不对,请多指点,多见谅。