'private'访问修饰符是否为编译器提供了更多优化空间?

sla*_*ast 5 c++ oop private

它是否允许编译器内联它,知道只有同一个类中的函数才能访问它?或者只是程序员的方便?

zwo*_*wol 6

编译器可以(但不是必须)按照您的建议进行优化,但这不是重点.访问修饰符的目的是在编译时捕获编程错误的某些类(没有双关语).私有函数是这样的函数,如果有人从类外部调用它们,那将是一个错误,并且您希望尽早了解它.

(只要你提出问题"编译器可以根据它可用的信息进行优化",答案就是"是的,除非标准中有一条特定的规则说它不允许"(例如规则volatile,但是,编译器不一定根据任何给定的信息进行优化.毕竟,编译器首先不需要进行任何优化!编译器有多聪明,如今,在很大程度上取决于你愿意让它运行多久; MSVC的整个程序PGO模式能够通过虚拟方法调度进行内联 - 它猜测最可能的目标,并且如果猜测错误则在运行时回退到常规虚拟调用 - 但是将编译速度降低至少两倍.)