C++ 类的静态成员变量学习笔记
2020-04-26 本文已影响0人
零岁的我
- 类中的静态成员变量可以用来实现多个对象共享数据的目标。
- static成员变量属于类,不属于任何具体的对象,即使创建多个对象,也只为静态成员变量分配一份内存,所有对象使用的都是这份内存中的数据。当某个对象修改了数据时,其他对象也能检查到。
- static成员变量必须在类声明的外部初始化,必须初始化,并且只能在类体外部进行。初始化时可以不赋初值,默认初始化为0。全局数据区的变量都有默认的初始值0,而动态数据区(堆区、栈区)变量的默认初始值是不确定的,一般都是垃圾值。
- static成员变量在初始化时不能再加static关键字,但必须要有数据类型。例如:int Student::m_total=0;
- static成员变量的内存分配既不是在声明类时分配,也不是在创建对象时分配,而是在(类外)初始化时分配,也就是说,没有在类外初始化的static成员变量是不能使用的。
- static成员变量可以使用对象访问,也可以通过类访问。
- static成员变量不占用对象内存,而是在所有对象之外开辟内存,即使不创建对象也可以访问。这就意味着static成员变量不随对象的创建而分配内存,也不随对象的销毁而释放内存。而普通成员变量在创建对象时分配内存,在对象销毁时释放内存。
- static成员变量和普通的static变量类似,都是在内存分区中的全局数据区分配内存,到程序结束时才释放。