C++有一个特殊的成员变量修饰符:static。为这个类定义一个且仅定义一个变量:
1 class stack{ 2 private: 3 static int stack_count; // 当前使用的栈的数目 4 int count; // 栈中元素数 5 public: 6 stack(){ 7 ++stack_count; 8 count = 0; 9 } 10 ~stack() { 11 // 减少一个栈 12 --count; 13 } 14 };
静态和非静态成员变量之间的区别在于成员变量属于对象,而静态成员变量属于类。如果有:
1 stack a_stack; 2 stack b_stack;
a_stack.stack_count和b_stack.stack.count相同。类stack只有一个stack_count。C++允许使用下面的语法访问静态成员变量:
<class>::<variable>
static的含义:
使 用 | 含 义 |
任何函数体外部的变量 | 变量的范围局限于声明它的文件 |
函数内的变量声明 | 这个变量是永久的。初始化一次,虽然会递归调用这个函数但是仅创建一个副本 |
函数声明 | 函数的范围局限于在声明它的文件 |
成员变量 | 为每个类(不是每个对象)创建一个变量的副本 |
成员函数 | 函数只能访问类的静态成员 |