4

我在学校“学习”了 C++,但有几件事我不知道,比如编译器可以优化的地方或内容,似乎我已经知道了,inline并且const可以提高一点……

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

因为我以前的老师都说它更“安全”或“防止不想要的或授权的班级访问/行为”,但最后,我想知道放置属性是否public可以限制范围并从而固定事情。

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

4

3 回答 3

6

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

但是,要直接回答您的问题:范围的任何缩小都可能有助于编译器进行某些优化,这在我的脑海中形成了我现在想不出关于使成员私有化的任何想法。

于 2010-06-29T11:49:45.530 回答
3

不会。将成员设为私有或受保护不会提供任何性能优势;当然,对您的设计(信息隐藏)的好处是巨大的。

于 2010-06-29T11:47:10.093 回答
2

没有public,privateprotected一旦你的代码被编译,所以它不会影响性能。

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

inline很少有任何影响。这只是对编译器的一个建议,编译器可以随意忽略(并且经常忽略)。编译器将内联它认为合适的函数。

于 2010-06-29T11:51:32.143 回答