关于类:C ++中的结构与类

Structs vs classes in C++

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

在C++中,什么时候应该使用结构代替类,反之亦然呢?我发现自己在使用结构时,一个全面的类管理一些信息似乎是多余的,但要指出所包含的信息都是相关的。我想知道,当一个比另一个更合适的时候,有什么好的指导方针可以告诉我们?

编辑:在阅读材料堆时发现这些链接,指出问题提交后溢出是相关的:

你应该在C++中使用类和结构?C++中结构与类的区别是什么?


从技术上讲,两者之间的唯一区别在于结构是公共的:默认情况下,类是私有的:

除此之外,没有技术差异。

然后,结构和类就变成了语言的一个纯粹的表达细微差别。

通常,您可以避免在结构中放置复杂的方法,并且大多数时候结构数据成员将保持公开。在类中,您希望强制实施强封装。

struct=数据是公共的,具有非常简单的helper方法

类=强封装,仅通过方法修改/访问数据


我将结构用于不提供构造函数或运算符的简单类型容器。

其他的课程。


当您只需要一个没有您需要保留的逻辑不变量的"存储桶"时,可以使用结构。用一个类来做其他事情。

也请参阅C++常见问题解答。


如果有方法,请使用类;如果没有方法,请使用结构。

一个类应该隐藏它的所有内部,只公开方法或属性。结构倾向于公开其所有内部结构,并且没有访问器方法。

如果只有一位代码在访问某些(相关)数据,那么结构可能是完全合理的。如果多个代码位需要修改数据,或者稍微复杂一点,那么类将是更好的选择。


如果需要控制对数据的访问,应该使用类。如果您不关心谁在访问什么,以及它们存储在那里的内容,那么结构可能更合适。

此外,如果需要对数据本身的完整性进行任何检查,则类更合适。


为了一致性,我总是使用类,即使只是容器。它纯粹是一种风格的选择,因为两者之间的差异可以忽略不计。


类和结构之间的区别在于,结构是变量组,类表示对象。对象具有属性和方法,并且是层次结构的一部分。

如果您使用C++来利用OO功能,最好使用更自然的类/对象。


C++中的结构是具有公共的默认访问方法的类,因此在技术上,除了默认值之外,没有差别,并且可以等效地使用这两种方法。

然而,也有一些期望和自然倾向,部分原因是C++中的结构来自C。

我的方法:如果它有任何私有数据、构造函数/析构函数或任何复杂的成员函数(它们不仅仅在设置/获取时进行转换等),那么使用类。


就我个人而言,我只需要一个数据容器(没有成员函数)就可以使用结构。否则,我使用类。

我唯一一次例外的规则是如果我需要一个简单的函数:例如。

1
2
struct compare { bool operator() { ... } };
sort(v.begin(), v.end(), compare());

需要一个EDOCX1[0]标签只会使代码变得杂乱无章。


参见现有问题:

C++中结构与类的区别

你应该在C++中使用类和结构?