网址
分类
通识
状态
已完成
标签
电脑使用
自主学习
用途
类型
软件
上次编辑时间
May 28, 2025 08:34 AM
作者
上级 项目
子级 项目
C++ 结构体核心知识笔记
目录
基本定义与特性
语法定义
核心特性
- 可包含任意类型成员(基本类型、数组、其他结构体)
- 支持成员函数(包括构造函数、虚函数)
- 默认访问权限为
public
- 支持继承(可继承类或其他结构体)
C与C++结构体对比
特性 | C结构体 | C++结构体 |
成员函数 | ❌ 禁止 | ✅ 允许(支持虚函数) |
访问控制 | 仅 public | public/private/protected |
静态成员 | ❌ 禁止 | ✅ 允许 |
继承能力 | ❌ 无继承 | ✅ 支持继承 |
构造函数 | ❌ 禁止 | ✅ 允许 |
直接初始化成员 | ❌ 禁止 | ✅ 允许(C++11起) |
空结构体大小 | sizeof=0 | sizeof=1(确保地址唯一) |
结构体与类的区别
特性 | struct | class |
默认访问权限 | public | private |
默认继承权限 | public | private |
使用场景 | 轻量级数据聚合 | 复杂对象封装 |
典型应用 | 坐标点、配置参数 | 业务逻辑实体、接口抽象 |
示例
高级用法
1. 嵌套结构体
2. 结构体数组
3. 函数参数与返回值
4. 模板结构体
初始化方式
方式 | 示例 | 说明 |
统一初始化 | Student s{"王五", 21, 92.0} | C++11推荐方式 |
构造函数初始化 | ```cpp | 需显式定义构造函数 |
ㅤ | struct Student { | ㅤ |
ㅤ | Student(string n, int a) : | ㅤ |
ㅤ | name(n), age(a) {} | ㅤ |
ㅤ | }; | ㅤ |
成员逐个初始化 | s.name = "赵六"; s.age = 22; | 需先声明变量 |
内存对齐与优化
对齐规则
- 成员对齐:按
#pragma pack值或成员类型大小的较小者
- 结构体整体对齐:按
#pragma pack值和最大成员大小的较小者
优化建议
注意事项
- 与C兼容性
与C交互时避免使用C++特性(如成员函数)
- 位域应用
特殊场景下节省内存:
- 前向声明
支持结构体前向声明:
- 类型安全
结构体是独立类型,避免隐式类型转换
最佳实践
- 优先使用
struct管理轻量级数据集合
- 超过5个成员时考虑拆分
- 配合
const引用传递大型结构体
- 使用
static_assert验证内存布局

