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可以在声明的时候初始化,也可以在类外初始化。但不可以通过构造函数初始化列表初始化
原文地址:https://www.cnblogs.com/happygirl-zjj/p/4636208.html