资讯动态

小学生学C++编程语法知识(C++中的 struct 与 class 有什么区别)

发布时间:2026/8/5 10:45:10 来源:尧图企业网站定制
C中的 struct 与 class 有什么区别同学们在学习 C 面向对象编程时经常会遇到两个非常像的东西struct和class很多同学会问老师struct 和 class 是不是两个完全不同的东西答案不是在 C 中struct 和 class 本质上非常相似都可以创建自己的数据类型都可以有变量和函数。它们最大的区别只有一个默认权限不同。但是这个小区别在实际编程中非常重要。一、先理解什么是 struct我们先回忆一下以前学过的结构体。比如我们想描述一个学生姓名年龄分数可以写struct Student { string name; int age; int score; };然后Student s; s.name 小明; s.age 10; s.score 95;这就是一个学生对象。可以理解为Student | |---- name | |---- age | |---- scorestruct 就像一个“数据盒子”。二、class 是什么class 是 C 中面向对象编程的重要工具。比如我们设计一个“机器人”机器人有属性电量颜色行为行走说话可以写class Robot { public: int power; string color; void speak() { cout你好endl; } };使用Robot r; r.power100; r.speak();这里Robot 不仅保存数据power color还拥有动作speak()三、struct 和 class 最大区别重点来了默认访问权限不同C 有三种访问权限关键字含义public公开大家可以访问private私有只有自己能访问protected保护子类可以访问1. struct 默认是 public例如struct Student { int age; };等价于struct Student { public: int age; };所以Student s; s.age10;没有问题。2. class 默认是 private例如class Student { int age; };实际上class Student { private: int age; };所以Student s; s.age10;会报错。为什么因为age 是私人的。就像你的日记我的秘密别人不能直接打开。四、生活中的理解我们可以这样理解struct 像一个公开资料表比如学生信息表姓名小明 年龄10 成绩95大家都可以查看。所以struct 默认 public。class 像一个机器人机器人内部电池 程序 密码不能随便修改。必须通过按钮开机() 充电() 运行()来操作。所以class 默认 private。五、代码对比struct版本#includeiostream using namespace std; struct Student { int age; }; int main() { Student s; s.age10; couts.age; return 0; }运行10成功。class版本#includeiostream using namespace std; class Student { int age; }; int main() { Student s; s.age10; return 0; }错误age is private六、class如何让变量公开加入public:例如class Student { public: int age; };现在Student s; s.age10;可以了。七、struct 也可以 private 吗当然可以很多初学者误认为struct只能publicclass只能private。这是错误的。例如struct Student { private: int age; public: void setAge(int x) { agex; } };完全正确。struct 也可以privatepublicprotected八、struct 和 class 都可以有哪些功能很多同学认为struct只能存数据。class可以写函数。这是错误的。struct 也可以1. 有函数struct Student { int score; void show() { coutscore; } };2. 有构造函数struct Student { int age; Student(int a) { agea; } };3. 继承struct也可以继承struct A { }; struct B: A { };所以现代 C 中struct 和 class 的能力几乎完全一样。九、为什么 C 保留两个东西这是一个历史原因。C 是从 C 语言发展来的。C语言里面struct早就存在。例如struct Point { int x; int y; };后来 C 增加面向对象需要类封装继承多态于是增加class为了保持兼容C保留了 struct。十、实际编程中怎么选择这是竞赛中很重要的经验。情况1只是保存数据例如图中的边struct Edge { int u; int v; int w; };推荐✅ struct比如KruskalvectorEdge edges;非常常见。情况2表示一个具有行为的对象例如银行账户class BankAccount { private: double money; public: void deposit(); void withdraw(); };推荐✅ class十一、信奥竞赛中的习惯在信息学竞赛中我们大量使用struct原因竞赛主要关注数据结构算法例如边struct Edge { int a; int b; int w; };节点struct Node { int x; int y; };学生struct Student { string name; int score; };非常方便。十二、一句话总结区别structclass本质类类成员变量可以有可以有成员函数可以有可以有继承可以可以默认访问权限publicprivate竞赛常用⭐⭐⭐⭐⭐⭐⭐记住struct 和 class 是亲兄弟能力一样唯一不同的是struct 默认公开class 默认保密。对于 GESP / CSP-J 阶段保存数据 → struct设计对象 → class这是最实用的选择方法。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价