欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > FX-C++结构体

FX-C++结构体

2025/7/3 18:39:10 来源:https://blog.csdn.net/weixin_50577176/article/details/146135534  浏览:    关键词:FX-C++结构体

1. 定义结构体

使用struct关键字定义结构体,结构体中可以包含数据成员和成员函数。

#include <iostream>
#include <string>struct Person {// 数据成员std::string name;int age;// 成员函数void printInfo() {std::cout << "Name: " << name << ", Age: " << age << std::endl;}
};

2. 创建结构体对象

定义结构体后,可以像使用基本数据类型一样创建结构体对象。

int main() {// 创建结构体对象Person person1;person1.name = "Alice";person1.age = 25;// 调用成员函数person1.printInfo();  // 输出: Name: Alice, Age: 25return 0;
}

3. 初始化结构体

C++支持多种初始化结构体的方式:

3.1 直接初始化
Person person2 = {"Bob", 30};
person2.printInfo();  // 输出: Name: Bob, Age: 30
3.2 使用构造函数初始化

可以在结构体中定义构造函数来初始化成员。

struct Person {std::string name;int age;// 构造函数Person(std::string n, int a) : name(n), age(a) {}void printInfo() {std::cout << "Name: " << name << ", Age: " << age << std::endl;}
};int main() {Person person3("Charlie", 35);person3.printInfo();  // 输出: Name: Charlie, Age: 35return 0;
}

4. 结构体中的访问控制

C++结构体的成员默认是public的,但可以显式指定privateprotected访问控制符。

struct Person {
private:std::string name;int age;public:// 构造函数Person(std::string n, int a) : name(n), age(a) {}// 公共成员函数void printInfo() {std::cout << "Name: " << name << ", Age: " << age << std::endl;}
};int main() {Person person("Dave", 40);person.printInfo();  // 输出: Name: Dave, Age: 40// person.name = "Eve";  // 错误: name 是 private 成员,无法直接访问return 0;
}

5. 结构体数组

可以创建结构体数组来存储多个结构体对象。

int main() {Person people[3] = {{"Alice", 25},{"Bob", 30},{"Charlie", 35}};for (int i = 0; i < 3; i++) {people[i].printInfo();}return 0;
}

6. 结构体嵌套

结构体可以嵌套其他结构体。

struct Address {std::string city;std::string country;
};struct Employee {std::string name;int age;Address address;  // 嵌套结构体
};int main() {Employee emp = {"Alice", 25, {"New York", "USA"}};std::cout << "City: " << emp.address.city << std::endl;  // 输出: City: New Yorkreturn 0;
}

7. 结构体与类的区别

在C++中,structclass非常相似,唯一的区别是默认访问控制:

  • struct的成员默认是public的。

  • class的成员默认是private的。

struct MyStruct {int x;  // 默认 public
};class MyClass {int x;  // 默认 private
};

8. 结构体的常见用途

  • 数据聚合:将相关的数据成员组合在一起。

  • 轻量级对象:当不需要复杂的面向对象特性时,可以用结构体代替类。

  • 与C语言兼容:在C++中,结构体可以保持与C语言的兼容性。


9. 完整示例

以下是一个完整的示例,展示了结构体的定义、初始化、成员函数和嵌套结构体的使用:

#include <iostream>
#include <string>struct Address {std::string city;std::string country;
};struct Person {std::string name;int age;Address address;void printInfo() {std::cout << "Name: " << name << ", Age: " << age << std::endl;std::cout << "Address: " << address.city << ", " << address.country << std::endl;}
};int main() {Person person = {"Alice", 25, {"New York", "USA"}};person.printInfo();return 0;
}

总结

C++中的结构体是一种灵活的数据类型,可以包含数据成员和成员函数,支持访问控制、构造函数、嵌套等特性。它与类的区别主要在于默认的访问控制。结构体通常用于简单的数据聚合或与C语言兼容的场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词