什么时候应该在C++中使用类而不是结构体?[重复]

22 浏览
0 Comments

什么时候应该在C++中使用类而不是结构体?[重复]

这个问题已经有了答案:
在C++中,结构体和类之间有什么区别?

社区在2个月前审查了是否重新打开该问题,最终决定将其关闭:

原始关闭原因未得到解决

在哪些场景下,使用struct比使用class更好?

admin 更改状态以发布 2023年5月21日
0
0 Comments

正如其他人所指出的,实际上只有两种语言差异:

  • struct 默认为公共访问,class 默认为私有访问。
  • 在继承时,struct 默认为public继承,class 默认为private继承。(具有讽刺意味的是,在C++中很多事情的默认值是错误的:public继承是更常见的选择,但人们很少声明struct只是为了节省打"public"这个关键字)。

但实际上,class/struct声明构造函数/析构函数和没有声明构造函数/析构函数的区别才是实际的差异。对于“普通旧数据”POD类型,有一些保证在你接管类的构造时不再适用。为了保持这种区分清晰,许多人故意只使用struct用于POD类型,如果他们要添加任何方法,就使用class。否则,下面两个代码片段的区别没有任何意义:

class X
{
  public:
  // ...
};
struct X
{
  // ...
};

(顺便说一句,这是一个带有一些关于什么是“POD类型”的好解释的主题:What are POD types in C++?

0
0 Comments

C++中结构体的区别如下:

  • 结构体中的成员和基类/结构体默认为公共的。
  • 中的成员和基类/结构体默认为私有的。

两者都可以有一个混合的公共保护私有成员,可以使用继承,并且可以有成员函数。

我建议您:

  • 对于没有任何类似类的特征的纯旧数据结构,请使用结构体
  • 在使用私有保护成员,非默认构造函数和运算符等特性时,请使用
0