如果没有多态和虚拟继承, 在 C++ 中, struct 和 class 的存取效率完全相同, 存取 class 的数据成员与非虚函数效率和 struct 完全相同, 不管该数据成员是定义在基类还是派生类.
class 的数据成员在内存中的布局不一定是数据成员的声明顺序, C++ 只保证处于同一个 access section 的数据成员按照声明顺序排列
在 C++ 中, class 和 struct 做类型定义是只有两点区别:
1. 默认继承权限不同, class 继承默认是 private 继承, 而 struct 默认是 public 继承
2.class 还可用于定义模板参数, 像 typename, 但是关键字 struct 不能同于定义模板参数
C++ 保留 struct 关键字, 原因:
1. 保证与 C 语言的向下兼容性, C++ 必须提供一个 struct
2.C++ 中的 struct 定义必须百分百地保证与 C 语言中的 struct 的向下兼容性, 把 C++ 中的最基本的对象单元规定为 class 而不是 struct, 就是为了避免各种兼容性要求的限制
3. 对 struct 定义的扩展使 C 语言的代码能够更容易的被移植到 C++ 中.
通常情况下, 大部分数据设为 private, 因此使用 class 情况比较多;
但是有时作为接口数据 (public) 或作为纯数据结构时, 使用 struct 更方便, 目的更明确.
来源: http://www.bubuko.com/infodetail-3596748.html