什么时候应该在C++中使用类而不是结构体?[重复]
什么时候应该在C++中使用类而不是结构体?[重复]
这个问题已经有了答案:
在C++中,结构体和类之间有什么区别?
社区在2个月前审查了是否重新打开该问题,最终决定将其关闭:
原始关闭原因未得到解决
在哪些场景下,使用struct
比使用class
更好?
admin 更改状态以发布 2023年5月21日
正如其他人所指出的,实际上只有两种语言差异:
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++?)