C++结构 - 毫无意义?
C++ Structs - Pointless?
可能的重复:
结构体和类在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
用作样式约定。
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 函数重载毫无意义吗
- x86 - 为什么编译器在下一条指令中插入看似毫无意义的JMP?
- OpenGL 中的动态加载着色器毫无意义吗?
- 如果编译器只能执行恒定折叠,则是毫无意义的
- 在同一调用中打印 %n 的值 - 毫无意义?
- Netbeans 中的C++:许多毫无意义的"unexpected token"提示
- C++结构 - 毫无意义?
- 我收到"无效类型 int[int]...",但这毫无意义
- 结构C++意义卡住了
- 常量工会成员有什么用?他们不是毫无意义吗?
- 动态数据结构(如链表)的意义是什么?
- 对c++结构声明中代码的目的/意义感到困惑
- 将函数的返回类型声明为 T&&& 是否毫无意义?
- 将所有值分配给结构有什么意义
- CUDAMemcpy对我来说毫无意义…为什么要在普通c++中指定设备内存?