结构体
声明:结构体名字,名称,
不完全类型:无法实例化,可以定义指针
定义:结构体内存结构,申请内存
翻译单元级别:在编译的时候只有一处定义,不同的cpp可以有各自的一种定义
结构体初始化:
类内初始化/聚合初始化/指派初始化
struct Str; //结构体声明//结构体定义,包含结构体的内存结构struct Str{int x = 3;//类内初始化int y;};int main(){Str m_str{3,4};//聚合初始化,按顺序赋值,未赋值的缺省为0Str m_str{.x=3,.y=4}; //c++20,指派初始化,避免聚合初始化由于类结构调整导致赋值错误}
mutable限定符
可以改变常量结构体内成员的值
struct Str{mutable int x=0;int y = 1;}int main(){const Str m_str;m_str.x = 3;}
静态数据成员

多个对象共享的数据成员
struct Str{static int x;static const int array_size = 0;//const对象类内初始化,在数组声明时,需要确定array_size的值int buffer[array_size];int y = 1;};int Str::x; //类外定义int main(){Str m_str1;Str m_str2;m_str1.x = 100; //x是静态数据成员,所以m_str1与m_str2的值相同}

heap:动态申请的内存
stack:临时变量存储区域,virtual pointer
