C++(29):结构体

发布于:2025-05-23 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

一、结构体的基本概念

1. 定义与作用

2. 与 class 的区别

二、结构体的定义与使用

1. 基本语法

2. 初始化与访问

3. 输入

三、结构体的高级特性

1. 成员函数

2. 构造函数

3. 运算符重载

四、结构体的内存布局

1. 内存对齐(Alignment)

2. 位域(Bit Fields)

五、结构体的特殊用法

1. 匿名结构体

2. 结构体嵌套

六、结构体与面向对象编程

1. 继承

2. 多态

七、结构体与标准库的交互

1. 作为容器元素

2. 作为哈希表键

八、最佳实践与注意事项


一、结构体的基本概念

1. 定义与作用
  • 结构体struct)是一种用户自定义的复合数据类型,用于将多个不同类型的变量组合成一个逻辑单元。

  • 核心用途:数据聚合、简化复杂数据管理、面向对象编程的轻量化实现。

2. 与 class 的区别
特性 struct class
默认访问权限 public private
默认继承权限 public private
惯用场景 数据聚合(无/简单行为) 封装数据与复杂行为

二、结构体的定义与使用

1. 基本语法

        结构体是一个可以包含多种数据类型的容器,包含的数据可以自定义。

struct 结构体名 {
    数据类型 成员1;
    数据类型 成员2;
    // ... 
};  // 注意分号不能省略

示例

struct Node {
    int id;
    string name;
    int yuwen;
};
2. 初始化与访问
// 默认初始化(成员值不确定)
Node n; 
                      
// 访问成员
n.id = 1;

// 初始化方式1
    Node n;
    n.id = 1;
    n.name = "xiaoli";
    n.yuwen = 88;
    cout << n.id << ' ' << n.name << ' ' << n.yuwen << '\n';

// 初始化方式2
    Node p1 = { 1, "xiaoli",88 };
    cout << p1.id << ' ' << p1.name << ' ' << p1.yuwen << '\n';


Point p2 {30, 40};              // 部分初始化(未初始化的成员为默认值)

 

3. 输入
// 定义学生结构体(建议更明确的命名如 Student)
struct Node {                //  命名
    int id;         // 学生学号
    string name;    // 学生姓名
    int yuwen;      // 语文成绩
} stu[1000];        //  全局固定大小数组(存在设计缺陷)

int main() {
    int n;
    cout << "请输入学生人数:" << endl;
    cin >> n;       // 未校验输入合法性

    // 输入循环(存在数组越界风险)
    for (int i = 1; i <= n; i++) {  /
        stu[i].id = i;      

网站公告

今日签到

点亮在社区的每一天
去签到