static数据成员与const数据成员的定义与初始化
三种数据类型的初始化
- 1.static int a 的初始化
- const int a 的初始化
- static const int a的初始化
三种初始化方式
- 在类外初始化
- 在构造函数中通过初始化列表初始化
- 在声明的同时初始化
一.static数据成员
静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用"类名.静态成员名"访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员函数不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员函数可以直接访问类中静态的成员.
静态数据成员在程序中也只有一份拷贝,由该类型的所有对象共享访问。
静态数据成员存储在全局数据区。
静态数据成员定义时要分配空间,所以不能在类声明中定义。它不属于特定的类对象,在没有产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它;
静态数据成员初始化的格式为:
<数据类型><类名>::<静态数据成员名>=<值>
类的静态数据成员有两种访问形式:
<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
<数据类型><类名>::<静态数据成员名>=<值>
类的静态数据成员有两种访问形式:
<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
二.const数据成员初始化方式
通过构造函数列表初始化,不能在构造函数里初始化
总结:
static int a要在类外初始化
const int a要在构造函数初始化列表中初始化
static const int a可以在声明的时候初始化,也可以在类外初始化。但不可以通过构造函数初始化列表初始化