静态成员变量:定义为静态成员意味着它能被所有的实例化对象所共有,其修改值为该类的其它所有实例所见。
下面看一个例子
class people
{
public:
people(int i):id(i)
{
num++;
}
private:
static int num;
int id;
};
num为静态成员,每调用有参构造一次num就自加一次。
首先看people这个类的空间长度sizeof(people); 注意结果为4而不是8,因为num是每个实例化对象所共有的,不是单独一个对象的空间。
下面来看静态成员的初始化问题:
class people
{
protected:
static const int age=18;
static int num;
static string name;
};
int people::num=0;
string people::name;
string people::name("alex");
1、C++规定如果是const限定的成员变量可以直接在类内初始化
2、非const限定要在类外初始化。初始方法是<类型> <作用域>::变量名=值;
3、静态对象做成员变量,初始化只需要再定义一次就行了,这样会调用类的无参构造,如果需要传递值则加括号。