C ++结构 - 毫无意义?

时间:2012-10-27 20:16:57

标签: c++ c

  

可能重复:
  What are the differences between struct and class in C++

我只想弄清楚在C ++中使用'C structs'是否基本无用。你通过使用它们获得了什么(反对简单地创建另一个类)?

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

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

所以我在这里遗漏了一些关于C ++结构的目的吗?或者他们有没有失去他们的目的,因为我觉得他们有C ++?

6 个答案:

答案 0 :(得分:3)

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

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

至于结构对等类的使用,我个人就像在C中一样使用它们,将相关变量组合在一个对象中,并且#34;。

答案 1 :(得分:3)

在我看来,Structures不会为您提供任何类无法实现的功能。 但是,Structures保存在C ++中,以便与c

向后兼容

答案 2 :(得分:2)

毫无疑问,他们存在的原因是为了与C兼容。但是你是对的,虽然C ++中的类和结构之间存在细微的差别,但是对于你不能用类做的结构你没有什么可以做的(反之亦然)

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

答案 3 :(得分:2)

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

我不明白为什么人们称他们为“无用”。关键字的使用成为个人偏好和/或编码标准的问题。就像“从POD类型中使用struct”或“对没有封装/访问控制的类型使用struct”。

获得相同程度的成功,可以声明内置->运算符“无用”,因为它与* + .组合等效。

答案 4 :(得分:1)

您可以使用与C相同的行为,没有人强迫您使用其他“类”功能。因此,如果您了解它们在C中的用途,那么它在C ++中也应该是可以理解的(至少是“类C”部分)。

答案 5 :(得分:1)

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

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