关于C ++结构:C ++结构 – 无意义?

C++ Structs - Pointless?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What are the differences between struct and class in C++

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

在C中,结构的点是显而易见的,只是分组数据的连续分配和访问这些数据的好方法,在C++中,我觉得角色变得更模糊了。

由于您可以拥有结构、实例变量和可见性标签的成员,所以我在C++中的结构和类之间唯一的真正区别是Stutt成员默认为公共,而类成员默认为私有。在我看来,它们实际上都可以用相同的底层系统实现。

那么,我在这里忽略了C++中结构的目的吗?或者他们已经失去了他们的目的,因为我觉得他们在C++?


在我看来,结构不会提供任何类无法实现的东西。但是,为了保持与C的向后兼容性,结构保持在C++中。


C++中的类和结构几乎是相同的,它们唯一的区别是类的默认可见性是EDCOX1(0),而在结构中,它是EDCOX1(1)。

在C++中保持结构的原因可能是为了保持语言与C兼容,因此将C代码移植到C++更容易,或者使程序员能够实现这种转换。

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


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

我不明白为什么人们会说它们"无用"。关键字的使用成为个人偏好和/或编码标准的问题。比如"对吊舱类型使用struct",或者"对没有封装/访问控制的类型使用struct"。

如果成功程度相同,则可以声明内置的->运算符"无用",因为它与*.组合等效。


毫无疑问,它们存在的原因是为了与C兼容,但你是对的,尽管C++中类和结构之间的差别很小,但是你不能用结构来做任何你不能用类来做的事情(反之亦然)。

我个人只在同一声明在C中合法时使用结构,以强调我正在做的任何事情的C类性质。


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

不过,我建议将struct用于具有公共成员的"哑"数据持有者,将class用于适当封装的类作为样式约定。


您可以有与C中相同的行为,没有人强迫您使用附加的"类"特性。因此,如果你理解他们在C中的目的,它在C++中也应该是可以理解的(至少是"C类"部分)。