C中的struct和class有什么区别?

新手上路,请多包涵

已经在 C#/.Net 的上下文中提出了 这个问题。

现在我想了解 C++ 中结构和类之间的区别。请讨论技术差异以及在 OO 设计中选择其中一种的原因。

我将从一个明显的区别开始:

  • 如果您不指定 public:private: ,则结构的成员默认是公共的;默认情况下,类的成员是私有的。

我确信在 C++ 规范的晦涩角落中还可以找到其他差异。

原文由 palm3D 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 697
2 个回答

您忘记了类和结构之间棘手的第二个区别。

引用标准(C++98 到 C++11 中的第 11.2.2 节):

在基类没有 访问说明符 的情况下,当派生类声明为 struct 时假定为 public,而当声明 为 class 时假定为 private。

为了完整起见,类和结构之间更广为人知的区别在 (11.2) 中定义:

默认情况下,使用关键字 class 定义的类的成员是 私有 的。默认情况下,使用关键字 structunion 定义的类的成员是 公共 的。

附加区别:关键字 class 可以用来声明模板参数,而 struct 关键字不能这样使用。

原文由 Assaf Lavie 发布,翻译遵循 CC BY-SA 3.0 许可协议

还有一个不成文的规则告诉我们:如果类的数据成员与自己没有关联,则使用结构。如果数据成员的值依赖于数据成员的另一个值,则使用类。

class Time
{
    int minutes;
    int seconds;
}

struct Sizes
{
    int length;
    int width;
};

原文由 Maciej Urbański 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题