类相对于数据结构的重要性

Significance of classes over data-structures

本文关键字:重要性 数据结构 相对于      更新时间:2023-10-16

类相对于数据结构或数据结构相对于类的意义是什么?

好的,最基本的可能是我们可以使用"访问类中的说明符",这意味着我们可以阻止某些并允许某些访问我们的数据。 接下来可能是数据隐藏。

但是,区分类和数据结构的主要内容是什么?我的意思是,当我们有类时,为什么需要数据结构,反之亦然?

C++具有Fundamantal类型和类。

结构和类都是引入新类的关键字。 默认值略有不同。

数据结构是具有某种不变性的数据排列。 它们可以是一个类,它们可以包含类,也可以是完全无类的。

它们是不同类别的事物。 这就像问钢铁和汽车有什么区别。

在课程作业中,老师要求的是让您知道老师或文本教授这些术语的定义。 术语意味着它们所处的上下文告诉它们的含义。 这是一个"你是否注意"而不是"你知道这个事实"的问题;问过互联网,你已经失败了。

在语法方面,C++classstruct之间的唯一区别是struct的成员默认是公共的,而class的成员默认是私有的。

然而,从隐含的设计意图的角度来看,存在更大的差异。struct曾经/现在是 C 的一个特性,并且曾经/现在(在 C 和 C++ 中)用于帮助程序员以有用的方式组织普通旧数据。 (例如,如果您知道 Persons-database 中的每个Person都需要存储此人的名字、姓氏和年龄,那么您可以将两个char数组和int放在一个struct Person中,从而使将所有数据作为一个单元进行跟踪比必须单独存储每个字段更方便)。

C++继续提供 C 风格的结构功能,但随后通过添加其他功能来更好地支持面向对象编程。 特别是,C++增加了对封装(通过privateprotected关键字)、通过继承进行功能扩展、通过方法将代码和数据显式绑定在一起以及通过虚拟方法将运行时多态性显式绑定的显式支持。 请注意,所有这些功能都可以通过手动遵循某些编码约定在 C 中近似,但通过明确支持它们作为语言的一部分,C++使它们更容易正确和一致地使用。

完成此操作后,C++继续通过向structsclasses提供所有这些新功能来搅浑水。 (这就是为什么技术差异如此之小的原因,如第一段所述) 但是,我相信当大多数程序员看到定义struct时,他们倾向于隐含期望该结构用作简单的 C 样式数据存储/数据组织容器,而当他们看到class时,他们希望它不仅包括"一些原始数据",还包括一些相关的业务逻辑, 在类的方法中实现,并且类将通过要求调用代码调用这些方法来强制执行其特定的规则/不变量,而不是允许调用代码直接读取/写入类的成员变量。 (这就是为什么在class中不鼓励使用公共成员变量,但在struct中则不鼓励使用公共成员变量的原因——因为类对象中的公共成员变量与此期望相矛盾,并且违反了最小意外原则)。