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++中使用类和结构?