关于数据结构的类或关于数据结构的类的意义何在?
好吧,最基本的方法是可以使用“类中的访问说明符”,这意味着我们可以阻止某些访问并允许某些访问我们的数据。 接下来可能是数据隐藏。
但是区分类和数据结构的主要目的是什么?我的意思是为什么当我们有类时为什么需要数据结构,反之亦然?
答案 0 :(得分:2)
C ++具有基本类型和类。
Struct和Class都是引入新类的关键字。默认值略有不同。
数据结构是具有某种不变性的数据排列。它们可以是一个类,可以包含类,也可以是完全免费的类。
它们是事物的不同类别。这就像问钢铁和汽车有什么区别。
在课程分配中,老师要的是让您知道老师或课文的定义。术语意味着它们所处的上下文告诉它们所要表达的意思。这是“您在注意”而不是“您知道这个事实”吗?询问过互联网,您已经失败了。
答案 1 :(得分:1)
就语法而言,在C ++中,class
和struct
之间的唯一区别是,struct
的成员默认情况下是公共的,而{{1 }}默认为私有。
从隐含设计意图的角度来看,存在较大的差异。 class
是C的一个功能,并且曾经(在C和C ++中)被用来帮助程序员以有用的方式组织普通旧数据。 (例如,如果您知道人员数据库中的每个struct
都需要存储人员的名字,姓氏和年龄,则可以放置两个Person
数组和和char
与int
一起使用,因此与必须分别存储每个字段相比,更方便地将所有数据作为一个单位进行跟踪。
C ++继续提供该C样式的struct功能,但随后通过添加其他功能以更好地支持面向对象的编程来进一步发展。特别是C ++添加了对封装的显式支持(通过struct Person
和private
关键字),通过 inheritance 的功能扩展,显式绑定-通过方法将代码和数据结合在一起,以及通过虚拟方法实现运行时多态。请注意,通过手动遵循某些编码约定,可以用C近似所有这些功能,但是通过将C作为语言的一部分来明确支持它们,C ++使得它们更容易正确正确地使用。
这样做之后,C ++通过使所有protected
和structs
都可以使用的所有新功能,继续使事情变得混乱。 (这就是为什么技术差异如此之小,如第一段所述)。但是,我相信,当大多数程序员看到定义的classes
时,他们倾向于对结构是隐含的期望。旨在用作简单的C样式数据存储/数据组织容器,而当他们看到struct
时,他们希望它不仅包含“一些原始数据”,而且还包含一些相关的业务逻辑,例如在类的方法中实现,并且该类将通过要求调用代码调用这些方法来强制执行其特定的规则/不变式,而不是允许调用代码直接读取/写入类的成员变量。 (这就是为什么在class
中不鼓励使用公共成员变量,而在class
中不鼓励这样做的原因-因为类对象中的公共成员变量违反了这种期望,并且违反了{{3 }}。