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