结构与类的表现

sys*_*ult 25 c++ performance struct class

我想知道是否在C++中使用g ++ -O3选项对类和C样式结构进行性能比较.有关于此的任何基准或比较.我一直认为C++类比结构更重,也可能更慢(编译时间对我来说不是很重要,运行时间更重要).我将实现一个B树,我应该为了性能而使用类或结构来实现它.

Ale*_*tov 53

在运行时级别,C++ 中的结构和类之间没有任何区别.因此,无论您使用代码struct A还是class A代码,它都不会产生任何性能差异.

另外,使用某些功能 - 比如构造函数,析构函数和虚函数 - 可能会有一些性能损失(但如果你使用它们,你可能还需要它们).但是你可以同样成功地在你的类或结构中使用它们.

本文档中,您可以阅读有关C++的其他与性能相关的细微之处.

  • 再一次:在运行时级别的结构和类之间没有区别 - 性能和内存消耗.您可以将它们视为同一事物的不同关键字,只对默认访问成员和默认继承模式有所不同(并且您不能在模板参数列表中使用'struct',但您的问题不是关于它,对吧?) (10认同)

Osw*_*ald 20

在C++中,struct默认情况下成员是公共的类的语法糖.

  • 或者从另一个角度来看,`struct`是向后兼容C的语法,`class`对于默认情况下成员是私有的类来说是更像OOP的语法糖... (10认同)
  • 如果可以的话,我想给出这个答案+1.000.000(只是略微夸张;)),因为导致原始问题的误解是如此普遍.所以每个人都在我之后重复:"**`struct`和`class`等价**(默认访问除外)" (7认同)
  • 我戒掉糖。我可以有一个无糖结构吗? (2认同)

Mar*_*ser 8

我的诚实意见......在实际表明自己是一个问题之前不要担心性能,然后分析你的代码.过早优化是万恶之源.但是,正如其他人所说,在运行时C++中的结构和类之间没有区别.