将属性保护/私有的任何性能原因?

时间:2010-06-29 11:44:31

标签: c++ class private public protected

我在学校“学习”了C ++,但有几件我不知道的事情,比如编译器可以优化的地方或内容,似乎我已经知道inlineconst可以提升小...

如果性能是重要的(例如游戏编程),那么将类属性放入publicprivateprotected)是否允许编译器生成更优化的代码?

因为我之前的老师都在说它更“安全”或“防止不想要或授权的类访问/行为”,但最后,我想知道放置属性public是否会限制范围因而紧固。

我不批评我的老师(我应该),但我所在的编程班不是很先进......

3 个答案:

答案 0 :(得分:5)

老师们告诉你使用private和protected来隐藏实现并教你隐藏信息而不是提出可疑的性能优化是正确的。尝试首先考虑合适的设计,然后考虑性能,在99%的情况下,这将是更好的选择(即使在性能关键的情况下)。性能瓶颈可能出现在很多不可预测的情况下,如果您的设计合理,则更容易实现。

直接回答你的问题:范围的任何缩小都可能有助于编译器进行某些优化,构成我的头脑,但我现在无法想到任何关于使成员私有的问题。

答案 1 :(得分:3)

没有。使成员保密或受保护不会带来任何性能上的好处;当然,您的设计(信息隐藏)的好处是巨大的。

答案 2 :(得分:2)

编译代码后,publicprivateprotected都没有,所以它不会影响性能。

在机器代码中也没有const这样的东西(可能除了ROM),但是编译器可以通过知道值是否可以改变(在某些情况下)来对程序进行一些逻辑优化。

inline很少有任何影响。它只是编译器的一个建议,编译器可以自由忽略(并且经常这样做)。编译器将按其认为合适的方式内联函数。