"私有"访问修饰符是否为编译器提供了更大的优化空间?
Does the 'private' access modifier give the compiler more room for optimization?
是否允许编译器内联它,知道只有同一类中的函数才能访问它?还是仅仅为了程序员的方便?
编译器可以(但不是必须)按照您的建议进行优化,但这不是点。访问点修饰符是为了在编译时捕获某些类(没有双关语的意思)的编程错误。私有函数是这样的函数,如果有人从类外部调用它们,那将是一个错误,您希望尽早了解它。
(任何时候您问"编译器是否可以根据可用的信息进行优化"这个问题,答案是"可以,除非标准中有特定的规则说不允许这样做"(例如volatile
的规则,其全部目的是禁止优化)。然而,编译器不一定会根据任何给定的信息进行优化。毕竟,编译器从一开始就不需要做任何优化!如今,你的编译器有多聪明,很大程度上取决于你愿意让它运行多久;MSVC的整个程序PGO模式能够通过虚拟方法调度内联——它猜测最可能的目标,如果猜测错误,则在运行时返回到常规的虚拟调用——但至少会使编译速度减慢两倍
访问说明符是c++机制的一部分,用于实现封装和抽象的OOP原则,而不是针对编译器进行优化。
一些智能编译器可能通过它实现一些优化,但c++标准没有强制这样做。访问说明符的目的不是优化,而是简化c++语言支持的原则的语言构造。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 空基优化子对象的地址
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 关闭||运算符优化
- 通过继承类使用来自不同命名空间的运算符
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当编译时已知引用占用结构中的空间时,是否错过了优化?
- 优化大型地址空间上的循环
- 在命名空间前缀解析和优化级别依赖关系中使用外部"C" C++
- 有没有一种方法可以优化这个DP程序中的空间
- 优化的c++代码,时间复杂度为O(n2),空间复杂度为0(1),用于后续输入
- 针对AT91SAM9 ARM处理器Linux用户空间程序优化FFT和数学运算
- 优化DP解决方案的空间复杂性
- 优化器可以省略在名称空间中声明的变量吗?
- "私有"访问修饰符是否为编译器提供了更大的优化空间?
- 常量正确性是否为编译器提供了更多的优化空间