声明只是表明了变量的数据类型和属性,并不分配内存;定义则是需要分配内存的。
类的静态成员(static member)必须在类内声明,在类外初始化
比如:
1 | class A{ |
为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的。
能在类中初始化的成员只有一种,那就是静态常量成员
。
1 | class A{ |
静态成员和常量成员不能在类内初始化。比如const int count = 0; 和static int count = 0;是不能在类里面初始化的。
静态常量数据成员
static const int count:
静态非常量数据成员
static int count:
非静态的常量数据成员
const int count:
非静态的非常量数据成员
int count:
在类外定义的成员变量肯定是有static 关键字的。
系统如何初始化取决于变量的类型以及变量定义的位置。
内置类型变量是否自动初始化取决于变量定义的位置。
类类型变量在定义时,如果没有提供初始化式,则会自动调用默认构造函数进行初始化(不论变量在哪里定义,都会被初始化,只不过初始化为什么样子由编译器决定了)。
如果某类型没有默认构造函数,则定义该类型对象时必须提供显示初始化式。
Update your browser to view this website correctly. Update my browser now