我在学校“学习”了C ++,但有几件我不知道的事情,比如编译器可以优化的地方或内容,似乎我已经知道inline
和const
可以提升小...
如果性能是重要的(例如游戏编程),那么将类属性放入public
(private
或protected
)是否允许编译器生成更优化的代码?
因为我之前的老师都在说它更“安全”或“防止不想要或授权的类访问/行为”,但最后,我想知道放置属性public
是否会限制范围因而紧固。
我不批评我的老师(我应该),但我所在的编程班不是很先进......
答案 0 :(得分:5)
老师们告诉你使用private和protected来隐藏实现并教你隐藏信息而不是提出可疑的性能优化是正确的。尝试首先考虑合适的设计,然后考虑性能,在99%的情况下,这将是更好的选择(即使在性能关键的情况下)。性能瓶颈可能出现在很多不可预测的情况下,如果您的设计合理,则更容易实现。
直接回答你的问题:范围的任何缩小都可能有助于编译器进行某些优化,构成我的头脑,但我现在无法想到任何关于使成员私有的问题。
答案 1 :(得分:3)
没有。使成员保密或受保护不会带来任何性能上的好处;当然,您的设计(信息隐藏)的好处是巨大的。
答案 2 :(得分:2)
编译代码后,public
,private
和protected
都没有,所以它不会影响性能。
在机器代码中也没有const
这样的东西(可能除了ROM),但是编译器可以通过知道值是否可以改变(在某些情况下)来对程序进行一些逻辑优化。
inline
很少有任何影响。它只是编译器的一个建议,编译器可以自由忽略(并且经常这样做)。编译器将按其认为合适的方式内联函数。