结构体与对象聚合
结构体:对基本数据结构进行扩展,将多个对象放置在一起视为一个整体
- 结构体的声明与定义
- 仅有声明的结构体是不完全类型(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自动类型推导