中所周知,C++ 中的 struct
来源于 C 语言历史遗留,除了默认作用域为 public
外,与 class
并无区别,理论上可以混用。我们这里通过标准库,以及 Unreal 等工程实践,对 struct
和 class
关键字的选择进行一个总结。
- 如果类型包含非
public
成员变量,应当选择class
。 - 如果类型包含
virtual
函数,应当选择class
。 - 如果类型可以 聚合初始化 ,应当考虑
struct
。 - 如果类型的构造析构以及赋值函数为
= default;
实现,应当考虑struct
。