Structs vs Objects,C ++中的数据访问速度

时间:2013-06-07 19:05:38

标签: c++ performance object struct

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

5 个答案:

答案 0 :(得分:9)

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

  

struct和class在功能上是等效的

(除了次要的私人/公共/受保护的默认值)。

所以没有区别。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

它是完全相同的,无论是结构还是类(我假设它是对象的意思,因为任何实例在技术上都是一个对象,是一个原语,一个结构或一个类),编译器对访问成员执行相同的偏移计算。两者之间并没有太大的区别 - 它们在语法方面可能看起来不同,但C ++调用someObject.someMethod()等同于C版SomeObject_someMethod(&someObject),这就是成员调用的真实内容在桌子底下。但这仅涉及成员方法,对类和结构成员的访问速度几乎相同。

答案 3 :(得分:1)

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

你可以引用类似的主题。

Performances of Structs vs Classes

Class vs Struct for data only?

答案 4 :(得分:1)

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

  • 结构
  • 工会

它们在功能上彼此相同,因此您应该进一步扩展并详细说明您的实施。