C++静态成员变量(static)
1.非const静态成员变量
要点:
- 类内声明
-
类外定义
/*类的声明放在头文件中*/ class class_name{ private: static typeName name; ... }; /*类中的非const静态成员,函数成员在cpp文件定义*/ typeName class_name::name = value;
注意:
i>类内声明——指定存储类型,但不分配内存
ii>类外定义——为非constj静态成员成员分配内存(静态区域)
类外定义时,不指定static,类外定义变量,使其具有外部链接属性(仅有一个实体),如果前面加上static,表示将其的链接属性改为内部,类的非const静态成员只能有一个实体,而内部链接属性表示在每个文件都有一个实体,这与类的静态成员变量只有一个实体相悖
2.const静态成员
要点:
类内声明时定义
class class_name{
private:
const static typeName name = value;
...
};
int main(){
cout << class_name::name << endl;
return 0;
}
这里可以直接输出,表明已经分配了空间。