何时在 C++ 中使用 struct over class [重复]
Posted
技术标签:
【中文标题】何时在 C++ 中使用 struct over class [重复]【英文标题】:When to use struct over class in c++ [duplicate] 【发布时间】:2012-12-04 20:26:37 【问题描述】:可能重复:When should you use a class vs a struct in C++?
在使用 C++ 编写程序时,何时应该使用 STRUCT 声明而不是 CLASS 声明?
-
从不!! ?
有什么...让你感觉更好的吗?
【问题讨论】:
Arghhhh... 我讨厌我的名字被放在我没有选择的关闭理由旁边。 请在此处阅读结构和类的详细信息:***.com/questions/54585/…。基本上我将结构用于成员可以取任何值的数据结构,这样更容易。 【参考方案1】:两者之间的唯一区别是默认情况下struct
是公共的,而class
成员是私有的。
我的规则是使用struct
,当我的意思是一组相关数据,在读/写它们时没有任何特殊语义。当我打算以更丰富的语义(读取方法)包装数据时使用class
,这些语义更有意义,提供任何需要的保护,或者实现更抽象的东西。
【讨论】:
【参考方案2】:除了默认访问级别之外,struct
和 class
完全等效。
我发现差异主要在程序员的脑海中 - 按照惯例,我们通常使用 struct
s 将小对象放在一起,没有复杂的功能 - 例如,Point
只有 3 个成员 -坐标。 POD 类型。
另一方面,我们通常使用class
es 来包含更大的对象,具有复杂的功能和相当大的界面。
例如:
struct Point
int x,y,z;
;
class Shape
std::vector<Point> corners;
public:
Shape(const std::vector<Point> corners);
double getVolume();
double getArea();
bool isConvex();
//etc.
;
【讨论】:
以上是关于何时在 C++ 中使用 struct over class [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在C和C++中struct与typedef struct的区别详细介绍
使用c头文件时,是不是需要将“struct”放在c++中的struct实例前面?