C++ 结构体(struct)最全详解

如题所述

C++ 结构体(struct)详解


结构体在C++中扮演着数据类型的角色,定义时有多种方式。首先,结构体类型如 Student 必须与变量一起声明,但不一定要在前面加上 "struct" 关键字,如:


cpp
// 不加struct也能定义变量
struct Student; // 定义类型
Student stu; // 变量定义


结构体可以紧跟类型说明后定义,甚至在定义无名结构体变量时一并完成:


cpp
// 后面还能定义更多变量
struct {
// 成员定义
} myStruct;


使用 typedef 可以为结构体创建别名:


cpp
typedef struct {
// 成员定义
} Student; // 无需再写struct
Student myStudent; // 直接使用新类型


动态创建结构体变量则需要结构体指针:


cpp
Student* dynamicStu = new Student(); // 动态结构体指针
dynamicStu->member; // 使用箭头操作符访问成员


结构体构造函数有多种初始化方法,包括默认构造和带参数的构造,注意在数组初始化时的使用规则:


cpp
// 安全构造函数示例
struct SafeStruct {
SafeStruct(int param) { ... }
};
SafeStruct[] arr; // 如果只用构造函数,数组无法初始化


结构体可以嵌套,如 Costs 可以嵌套在 Item 中:


cpp
struct Item {
string partNum;
string description;
Costs pricing; // 嵌套结构体
};
Item widget;


访问嵌套结构体成员需通过成员变量名:


cpp
widget.pricing.wholesale;


结构体赋值和成员访问也很直观:


cpp
Date birthday = {1990, 8, 23}; // 初始化所有成员
Date partialBirthday = {1990, 8}; // 部分初始化
// 不合法:不能在声明时初始化成员
// Date invalid = {1990, 8, 23}; // 错误的声明


总结,结构体变量通过"."访问,结构体指针通过"->",明确区分数据和指针操作。理解这些概念有助于更有效地使用C++中的结构体。

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜