结构到类-显著的函数开销?C++

结构到类-显著的函数开销?C++,c++,function,methods,struct,overhead,C++,Function,Methods,Struct,Overhead,以此为例: 我有20个结构。我直接访问结构的所有字段,从中获取值,指向其他子结构的指针,等等 现在,我重组了计划: 我没有直接访问结构的字段,而是将所有结构封装到它们各自的类中,并为所有可能的get和setx提供函数 问题:使用方法/函数而不是直接访问结构是否会影响性能 某种形式的估计百分比会很好,或者有一些解释。我还没有听说性能在结构和类之间有很大的差异,所以这是您的要求。 我用谷歌搜索了下面的这些页面,他们说在性能方面应该没有什么区别。 http://forums.codeguru.com/

以此为例:

我有20个结构。我直接访问结构的所有字段,从中获取值,指向其他子结构的指针,等等

现在,我重组了计划: 我没有直接访问结构的字段,而是将所有结构封装到它们各自的类中,并为所有可能的get和setx提供函数

问题:使用方法/函数而不是直接访问结构是否会影响性能


某种形式的估计百分比会很好,或者有一些解释。

我还没有听说性能在结构和类之间有很大的差异,所以这是您的要求。 我用谷歌搜索了下面的这些页面,他们说在性能方面应该没有什么区别。
http://forums.codeguru.com/showthread.php?332571-结构与类

一般来说,如果getter和setter是在类中内联定义的,那么性能就不会有差异。对于几乎任何当代编译器,函数调用都将以内联方式展开,不会留下任何开销。这通常适用于各种小型内联函数。例如,请参阅Herb Sutter在其中讨论了为什么使大多数/所有虚拟函数非公共化不会增加生成代码的开销


请注意,如果在类中内联定义函数,则如果定义发生更改,则需要重新编译任何客户端代码。但这适用于头文件中的大多数/所有更改。

说真的,无论是否使用getter,您都不希望进行这种异常的取消引用。getter和setter通常由编译器内联,这意味着不会有性能差异。更好的选择是尽可能多地使用内联函数。这样你就不会失去抽象和性能。不,你不会得到非常有用的答案,除非你给出更具体的例子,比如一些可以编译的类/代码例子。最好的答案可能是您自己尝试对这两个备选方案进行一些性能测试。我估计发布版本中的速度差异为0%,假设您已使访问器函数能够内联。我的问题是,使用函数而不是直接访问成员是否会对性能产生影响,我已经到处找过了,但是谢谢: