C/C++:struct 和 class 的区别

14 篇文章 0 订阅
本文探讨了C++中struct和class的主要区别,包括默认访问权限、构造函数行为以及内存分配方式。struct适合用于轻量级数据结构,如Line和Point,而class更侧重于对象的实现。C++的struct不再是C语言中的纯粹数据结构,而是增加了面向对象的特性。理解这两者的差异有助于优化代码设计和提高效率。
摘要由CSDN通过智能技术生成

汇总

  1. struct 是值类型,class 是对象类型
  2. struct 默认的访问权限是 public,而class 默认的访问权限是 private.
  3. struct 总是有默认的构造函数,即使是重载默认构造函数仍然会保留。这是因为 struct 的构造函数是由编译器自动生成的,但是如果重载构造函数,必需对 struct 中的变量全部初始化。并且 struct 的用途是那些描述轻量级的对象,例如 Line,Point 等,并且效率比较高。class 在没有重载构造函数时有默认的无参数构造函数,但是一被重载些默认构造函数将被覆盖。
  4. struct 的 new 和 class 的 new 是不同的。struct 的 new 就是执行一下构造函数创建一个新实例再对所有的字段进行 Copy。而 class 则是在堆上分配一块内存然后再执行构造函数,struct 的内存并不是在 new 的时候分配的,而是在定义的时候分配。

思考

struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。

虽然感觉 struct 是多余的,但考虑到“对C兼容”就将 struct 保留了下来,并做了一些扩展使其更适合面向对象,所以 C++ 中的 struct 再也不是 C 中的那个了。

两者最大的区别就在于思想上, C 语言编程单位是函数,语句是程序的基本单元。而 C++ 语言的编程单位是类。从 C 到 C++ 的设计有过程设计为中心向以数据组织为中心转移。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值