【问题标题】:Difference between a struct and a class [duplicate]结构和类之间的区别[重复]
【发布时间】:2011-12-07 09:44:01
【问题描述】:

可能重复:
What are the differences between struct and class in C++

我已经完成了作业,并在 Google 上得到了不同的答案。 有人说结构没有继承,有人说结构没有访问说明符,而另一些人说两者都有。
那么有人可以澄清一下,C 和 C++ 中结构和类之间的区别,以及 C 和 C++ 中结构之间的区别。

【问题讨论】:

  • 一方面,C 中没有类。

标签: c++ struct


【解决方案1】:

在C++中,结构体和类的唯一区别是结构体成员默认是公有的,类成员默认是私有的。

然而,就风格而言,最好将 struct 关键字用于在 C 中可以合理地成为结构(或多或少 POD 类型)的东西,以及 class如果它使用 C++ 特定的特性(例如继承和成员函数),则使用关键字。

C 没有类。

C 结构不能使用 C++ 特有的特性。

编辑

C++ FAQ Lite,问题 7.9,有这样的说法:

struct 的成员和基类默认为public, 而在class 中,它们默认为private。注意:你应该做 您的基类明确 publicprivateprotected, 而不是依赖默认值。

structclass 在其他功能上是等效的。

好了,干脆利落的 techno 谈话就讲完了。感情上,大部分 开发人员对classstruct 进行了严格区分。 struct 只是感觉就像是一堆几乎没有 以封装或功能的方式。 class 感觉就像一个 生活和负责任的社会成员,提供智能服务, 强大的封装屏障和定义明确的接口。自从 这是大多数人已经拥有的内涵,你应该可能 如果你有一个方法很少的类,请使用 struct 关键字 并且有public 数据(这样的事情确实存在于精心设计的 系统!),否则您应该使用 class 关键字。

并引用 Stroustrup 的“The C++ Programming Language”,第 4 版,第 16.2.4 节:

S 的这两个定义是可以互换的,尽管它是 坚持一种风格通常是明智的。您使用哪种样式取决于 环境和品味。我倾向于将 struct 用于我的类 认为“只是简单的数据结构”。如果我认为一个类是“一个 具有不变量的正确类型,”我使用 class。构造函数和 即使对于 *struct*s,访问函数也非常有用,但作为 简写而不是不变量的保证。

【讨论】:

  • -1 风格点是意见和高度辩论
  • @JohnDibling:是的,这是一种意见。你对不同的意见有什么支持吗?
  • @Siddhartha:当然可以。作为风格问题(在我看来)他们不应该使用继承,但他们可以。
  • @JohnDibling:一定要发表一个回答,说明你的意见。我并不是说程序员应该被这样的结构“抛出”,只是在我看来,它应该被声明为class。是的,这只是一种观点(通常是风格问题)——但我相信这是大多数 C++ 程序员都认同的观点。
  • @KeithThompson:哇,挖出一个中型老歌。虽然我不质疑您或我们圣父的观点的有效性,但我仍然不同意风格观点。我的立场有些不同,尽管不可否认与你的外星人不同。几年前我觉得我没有精力参加这场辩论,所以没有发表反对意见。也许我现在会。与此同时,我确实认为我收回我的反对票是合理的,因为您的意见在我看来是完全正确的。
【解决方案2】:

在 C 中,类不存在。在 C++ 中,结构的默认访问说明符为 public,而类默认为 private

C 和 C++ 中的结构有几个不同之处;在 C++ 中,它们可以从其他类或结构继承,它们可以包含成员函数,并且它们的名称不需要使用详细的类型说明符来引用。

【讨论】:

  • kk 所以结构确实继承..从其他类和结构?如果一个类试图从一个结构继承怎么办?
猜你喜欢
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 2013-03-29
  • 2011-08-15
  • 2014-08-16
  • 2011-04-08
相关资源
最近更新 更多