"私有"访问修饰符是否为编译器提供了更大的优化空间?

Does the 'private' access modifier give the compiler more room for optimization?

本文关键字:空间 优化 编译器 访问 私有 是否      更新时间:2023-10-16

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

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

(任何时候您问"编译器是否可以根据可用的信息进行优化"这个问题,答案是"可以,除非标准中有特定的规则说不允许这样做"(例如volatile的规则,其全部目的是禁止优化)。然而,编译器不一定会根据任何给定的信息进行优化。毕竟,编译器从一开始就不需要做任何优化!如今,你的编译器有多聪明,很大程度上取决于你愿意让它运行多久;MSVC的整个程序PGO模式能够通过虚拟方法调度内联——它猜测最可能的目标,如果猜测错误,则在运行时返回到常规的虚拟调用——但至少会使编译速度减慢两倍

访问说明符是c++机制的一部分,用于实现封装和抽象的OOP原则,而不是针对编译器进行优化。

一些智能编译器可能通过它实现一些优化,但c++标准没有强制这样做。访问说明符的目的不是优化,而是简化c++语言支持的原则的语言构造。