C++ static变量详解 Qt系列教程

  • A+
所属分类:Qt系列教程 未分类

Static变量

声明和定义同时完成

编译器默认初始化static变量

作用域在当前cpp中。如果a.h中定义了一个static变量static int a=1;a.cpp和b.cpp中都引用了a.h,则a.cpp和b.cpp中的a不是同一个变量

类静态成员变量

使用static修饰类的成员变量时,该变量将会升级为类静态成员变量,类声明中,只对类静态成员变量进行声明,类静态成员变量的定义和初始化放在cpp中(避免重复定义),执行到cpp中的类静态成员变量定义语句时,才会在全局存储区为该变量分配内存。类静态成员变量的内存并不属于该类。程序执行到new A时,会对类A中所有的普通成员变量分配内存,如果成员变量是基本类型(如 int、float 等),则它们的内存在申请对象内存时也被一并分配;如果成员变量是复合类型(如数组、结构体等),则它们的内存分配取决于这些复合类型的定义方式。对于指针类型的成员变量,它们只包含指向某些内存块的地址值,在申请对象内存时不会自动分配其所指向的内存。但是不会对类静态成员变量分配内存,只有执行到cpp中的类静态成员变量定义语句时,才会在全局存储区为该变量分配内存。由于普通成员变量和类静态成员变量的内存区不一样,所以,A对象的内存大小不包含类静态成员变量的内存大小。

注意:类的.h中的class是对类进行声明,包括对类静态成员变量的声明,不是定义

Qt大课堂-QtShare

发表评论

您必须登录才能发表评论!