面试题:C++ 中 struct 和 class 的区别?

在 C++ 中,struct 和 class 都用于定义自定义数据类型,但它们在默认访问权限和继承行为上有一些区别。以下是它们的详细对比:


1. 默认访问权限

  • struct
    • 默认的成员访问权限是 public
  • class
    • 默认的成员访问权限是 private

2. 默认继承权限

  • struct
    • 默认的继承权限是 public
  • class
    • 默认的继承权限是 private

3. 使用习惯

  • struct
    • 通常用于定义简单的数据结构,尤其是只有数据成员而没有成员函数的类型。
  • class
    • 通常用于定义更复杂的类型,包含数据成员和成员函数,并封装行为。

4. 功能上的等价性

  • 除了默认访问权限和继承权限的区别外,struct 和 class 在功能上是完全等价的。

5. 选择 struct 还是 class

  • 使用 struct 的场景:
    • 定义简单的数据结构,尤其是只有数据成员的类型。
    • 需要默认的 public 访问权限和继承权限。
  • 使用 class 的场景:
    • 定义复杂的类型,包含数据成员和成员函数。
    • 需要封装数据和行为,使用 private 或 protected 访问权限。

总结对比

特性structclass
默认访问权限publicprivate
默认继承权限publicprivate
使用习惯用于简单数据结构用于复杂类型,封装行为
功能等价性与 class 功能等价与 struct 功能等价

使用建议

  • 如果需要定义简单的数据结构,且不需要封装,优先使用 struct
  • 如果需要定义复杂的类型,并封装数据和行为,优先使用 class

在实际开发中,选择 struct 还是 class 主要取决于代码的设计意图和团队的编码规范。

THE END
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容