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

gok*_*oon 3 c++ private class protected public

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

如果性能是一个重要的东西(例如游戏编程),那么放置类属性不是public(privateprotected)允许编译器制作更优化的代码吗?

因为我之前的所有老师都在说它更"安全"或"防止不想要或授权的类访问/行为",但最后,我想知道放置属性是否public可以限制范围,从而加固事物.

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

Jan*_*net 5

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

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

  • 当然,您始终可以从某个类继承,只是为了访问它的受保护字段(我认为这就是您所说的受保护不隐藏实现的意思)。但这就像争论 C++ 中的 const 修饰符不会使值成为 const,因为您始终可以 const_cast 一个值并随意修改它。 (2认同)
  • C++访问控制被描述为"对Murphy的保护,而不是Machiavelli".他们记录了他们的意图并且通常可以防止意外违规,但不会停止确定的滥用行为. (2认同)