类相对于数据结构的重要性
Significance of classes over data-structures
类相对于数据结构或数据结构相对于类的意义是什么?
好的,最基本的可能是我们可以使用"访问类中的说明符",这意味着我们可以阻止某些并允许某些访问我们的数据。 接下来可能是数据隐藏。
但是,区分类和数据结构的主要内容是什么?我的意思是,当我们有类时,为什么需要数据结构,反之亦然?
C++具有Fundamantal类型和类。
结构和类都是引入新类的关键字。 默认值略有不同。
数据结构是具有某种不变性的数据排列。 它们可以是一个类,它们可以包含类,也可以是完全无类的。
它们是不同类别的事物。 这就像问钢铁和汽车有什么区别。
在课程作业中,老师要求的是让您知道老师或文本教授这些术语的定义。 术语意味着它们所处的上下文告诉它们的含义。 这是一个"你是否注意"而不是"你知道这个事实"的问题;问过互联网,你已经失败了。
在语法方面,C++class
和struct
之间的唯一区别是struct
的成员默认是公共的,而class
的成员默认是私有的。
然而,从隐含的设计意图的角度来看,存在更大的差异。struct
曾经/现在是 C 的一个特性,并且曾经/现在(在 C 和 C++ 中)用于帮助程序员以有用的方式组织普通旧数据。 (例如,如果您知道 Persons-database 中的每个Person
都需要存储此人的名字、姓氏和年龄,那么您可以将两个char
数组和int
放在一个struct Person
中,从而使将所有数据作为一个单元进行跟踪比必须单独存储每个字段更方便)。
C++继续提供 C 风格的结构功能,但随后通过添加其他功能来更好地支持面向对象编程。 特别是,C++增加了对封装(通过private
和protected
关键字)、通过继承进行功能扩展、通过方法将代码和数据显式绑定在一起以及通过虚拟方法将运行时多态性显式绑定的显式支持。 请注意,所有这些功能都可以通过手动遵循某些编码约定在 C 中近似,但通过明确支持它们作为语言的一部分,C++使它们更容易正确和一致地使用。
完成此操作后,C++继续通过向structs
和classes
提供所有这些新功能来搅浑水。 (这就是为什么技术差异如此之小的原因,如第一段所述) 但是,我相信当大多数程序员看到定义struct
时,他们倾向于隐含期望该结构用作简单的 C 样式数据存储/数据组织容器,而当他们看到class
时,他们希望它不仅包括"一些原始数据",还包括一些相关的业务逻辑, 在类的方法中实现,并且类将通过要求调用代码调用这些方法来强制执行其特定的规则/不变量,而不是允许调用代码直接读取/写入类的成员变量。 (这就是为什么在class
中不鼓励使用公共成员变量,但在struct
中则不鼓励使用公共成员变量的原因——因为类对象中的公共成员变量与此期望相矛盾,并且违反了最小意外原则)。
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 尝试构建"lock-free"数据结构C++
- 设计将引用元素移动到开头的数据结构.C++
- 在学习数据结构之前对STL有一个了解是好的吗?
- 如何解析表示树状数据结构的字符串
- 我对数据结构、双向链表有一些问题
- googletest:测试太大的数据结构
- C++中deque数据结构的大O是什么?
- 我可以使用哪种数据结构来处理这种方式
- 将文本文件解析为树状数据结构
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- 哪些存储了不完整类型的 STL 数据结构可以用作类成员?
- C++,您能否设计一种数据结构,将指针保存在连续内存中并且不会使它们失效?
- 类相对于数据结构的重要性