结构体与对象聚合
结构体:对基本数据结构进行扩展,将多个对象放置在一起视为一个整体
- 结构体的声明与定义
- 仅有声明的结构体是不完全类型(incomplete type) ```cpp struct str1;
int main() { str1* my_str{}; //str1 my_str{};如果这样写,编译器会报错:Variable has incomplete type ‘str1’ }
- 结构体(以及类)的**一处定义**原则:翻译单元级别数据成员(数据域)的声明与初始化- C++11以后,数据成员可以使用**decltype**来声明其类型,但不能使用auto- 数据成员声明时可以引入**const、引用**等限定- **数据成员会在构造类对象时定义**- (C++11)类内成员初始化- 聚合初始化:从初始化列表到**指派初始化**器mutable```cpp#include <iostream>struct Str{mutable int x = 0;};int main(){const Str m_str{};m_str.x = 3;std::cout << m_str.x << std::endl;}
静态数据成员——多个对象之间共享的数据成员
- 定义方式的衍化
- 可以使用auto自动类型推导
