可能重复:
What are the differences between struct and class in C++
我只想弄清楚在C ++中使用'C structs'是否基本无用。你通过使用它们获得了什么(反对简单地创建另一个类)?
在C语言中,结构点是显而易见的,只是连续分组数据的分配和访问所述数据的好方法,在C ++中我觉得这个角色变得更加模糊。
看到你可以拥有作为结构,实例变量和可见性标签成员的函数,我在C ++中的结构和类之间看到的唯一真正的区别是结构成员默认为public而类成员默认为private。我看到它们的方式,实际上它们都可以用相同的底层系统实现。
所以我在这里遗漏了一些关于C ++结构的目的吗?或者他们有没有失去他们的目的,因为我觉得他们有C ++?
答案 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
用于正确封装的类作为样式约定。