【问题标题】:Speed of data access in Structs vs Objects, C++ [duplicate]结构与对象中的数据访问速度,C++ [重复]
【发布时间】:2013-06-07 19:05:37
【问题描述】:

我想知道在 C++ 中从结构访问数据和从类访问数据的运行时间是否存在差异。在我目前的理解中,Struct 是一个类,但没有成员函数。我有一些使用对象的代码比使用结构慢得多,这似乎表明存在差异,但这让我感到困惑,因为我的直觉告诉我不应该有很大的差异。

【问题讨论】:

  • 对象是什么意思?你是说上课吗?因为如果你这样做了,那么结构和类之间的 C++ 没有区别,只是结构成员默认是公共的
  • 这个问题让我有点困惑。除了 struct 中的成员默认为 public 而类为 private 之外,struct 与 class 不同吗?你说的对象是什么意思?类的对象?
  • 它们相同,但默认访问权限不同。也许您正在考虑堆栈上的对象与堆上的对象?
  • 代码?什么代码?你能给我们展示一些表现得这么有趣的代码吗?
  • 你能给我们看看代码吗,因为这不是正确的行为

标签: c++ performance object struct


【解决方案1】:

根据“What are the differences between struct and class in C++?”,引用自C++ FAQ

结构和类在其他方面在功能上是等效的

(除了较小的私有/公共/受保护默认值)。

所以没有区别。

【讨论】:

    【解决方案2】:

    无论是结构体还是类(我假设它就是您所说的对象,因为任何实例在技术上都是对象,无论是原语、结构体还是类),都是一样的,编译器对访问成员执行相同的偏移计算。两者之间并没有太大的区别——它们在语法上可能看起来不同,但 C++ 调用 someObject.someMethod() 等同于 C 版本 SomeObject_someMethod(&someObject),这是成员调用的真正含义.但这仅涉及成员方法,对类和结构成员的访问速度实际上是相同的。

    【讨论】:

      【解决方案3】:

      我不知道您为什么会遇到运行时间不同的问题。
      结构和类,我假设这就是您所说的对象,除了默认为公共的结构和默认为私有的类之外,几乎相同。
      So to sum it up there should be no difference functionally or speed wise
      编辑:您可能会遇到结构运行得更快的原因是因为人们倾向于将结构用于 POD,而类具有更多功能,但是这是基于样式而不是结构和类的实际功能

      【讨论】:

        【解决方案4】:

        在运行时执行时,执行速度没有差异。

        你可以参考类似的帖子。

        Performances of Structs vs Classes

        Class vs Struct for data only?

        【讨论】:

          【解决方案5】:

          在 C++ 中,有 3 种对象属于类类型:

          • 结构
          • 类
          • 工会

          它们在功能上是等价的,因此您应该进一步扩展并详细介绍您的实现。

          【讨论】:

          • 联合在语法上相似,但在语义上却大不相同。
          • @aschepler 这就是标准所说的,3 种类型的类对象,包括联合,它们如何工作或它们提供什么是另一回事,结构和类之间也存在差异,并不意味着它们属于同一个类对象的定义。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-02
          • 1970-01-01
          • 2017-11-24
          • 2014-05-14
          • 1970-01-01
          • 2017-10-25
          相关资源
          最近更新 更多