C++结构 - 毫无意义?

C++ Structs - Pointless?

本文关键字:毫无意义 结构 C++      更新时间:2023-10-16

可能的重复:
结构体和类在C++中有什么区别

我只是想弄清楚在C++中使用"C 结构"是否本质上是无用的。 通过使用它们(而不是简单地创建另一个类)你会得到什么吗?

在 C 语言中,结构的意义是显而易见的,简单地连续分配分组数据以及访问所述数据的好方法,C++我觉得角色变得更加模糊。

看到你可以拥有作为结构、实例变量和可见性标签成员的函数,我在 C++ 中看到的结构和类之间唯一真正的区别是结构成员默认为 public,而类成员默认为 private。 在我看来,它们实际上都可以使用相同的底层系统来实现。

那么我在这里错过了一些关于C++结构的目的? 还是他们有点失去了目标,就像我觉得他们在C++中所做的那样?

C++中的类和结构几乎相同,唯一将它们分开的是类的默认可见性是private,而在结构中它是public的。

在C++中保留结构的原因可能是保持语言与 C 的兼容性,因此将 C 代码移植到 C++ 或程序员进行这种转换会更容易。

至于结构 contra 类的使用,我个人就像在 C 中一样使用它们,将相关变量分组到单个"对象"中。

在我看来,结构不会给你任何不能由类实现的东西。 但是,结构保持C++,以便与c

毫无疑问,它们存在的原因是为了与 C 兼容。但是你是对的,尽管类和结构之间C++之间存在细微差异,但你不能用结构做你不能用类做的(反之亦然)。

就我个人而言,只有当相同的声明在 C 中合法时才使用结构,以强调我正在做的任何事情的类似 C 的性质。

它们是"使用相同的完全相同的底层系统"实现的。实际上,您实际上可以使用class关键字声明一个类型,然后使用struct关键字定义它。基本上,除了您已经提到的概念差异之外,它们是完全相同的:默认访问权限。

我不明白为什么人们会称它们为"无用"。关键字的使用成为个人偏好和/或编码标准的问题。例如"使用 POD 类型struct"或"将struct用于没有封装/访问控制的类型"。

以相同的成功程度,可以宣布内置->运算符"无用",因为它等价于*+.组合。

你可以有与 C 中相同的行为,没有人强迫你使用额外的"类"功能。因此,如果你理解他们在C中的目的,那么在C++中也应该是可以理解的(至少是"类C"部分)。

正如Joachim Pileborg已经指出的那样,类和结构在C++中几乎是一回事。

但是,我建议将struct用于具有公共成员的"愚蠢"数据持有者,并将正确封装的类class用作样式约定。