访问说明符和性能

kur*_*urt 2 c++

可以更改类成员的访问说明符(例如从私有到受保护)会影响类的性能(执行速度)吗?如果是这样,请解释如何?

Que*_*tin 7

不.如果确实如此,我会认为你的编译器被破坏了.

通常,编译(非调试)可执行文件不包含有关布局,访问级别甚至类成员类型的信息.这些根本不是执行程序所必需的,因此在通常的"不为你不使用的东西买单"时,它们会完全被剥离,因此不会对性能产生任何影响.


从理论上讲,它可能间接影响优化器,但我怀疑它在实践中是否存在.- 斯拉瓦

有道理.在C++中,访问说明符只是在命名时执行的健全性检查.它总是最后执行(在重载解析,名称查找等之后),并且只有两个结果:命名实体是可访问的,一切都很好,或者编译暂停.它根本无法改变程序的可观察行为.因此,它对性能有任何影响确实奇怪.