c++ - 'private'访问修饰符是否给了编译器更大的优化空间?

标签 c++ oop private

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

最佳答案

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

(任何时候你问“编译器是否可以根据可用的信息进行优化”这个问题,答案都是“是的,除非标准中有特定的规则说不允许”(例如volatile 的规则,其全部目的是抑制优化)。然而,编译器不一定打扰根据任何给定的信息进行优化。毕竟,没有要求编译器首先进行任何优化!如今,您的编译器有多聪明,很大程度上取决于您愿意让它运行多长时间;MSVC 的全程序 PGO 模式能够通过虚拟方法分派(dispatch)进行内联 -- 它猜测最有可能的目标,如果猜测错误则在运行时回退到常规虚拟调用 -- 但编译速度至少减慢两倍。)

关于c++ - 'private'访问修饰符是否给了编译器更大的优化空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456541/

相关文章:

c++ - 使用 RcppGSL 的狄利克雷分布

c++ - Qt 在 QTableView 中设置自定义小部件

C++ 获取自 01/01/0001 00 :00:00 以来的毫秒数

c++ - 如何在不导出对象的情况下自动删除对象

javascript - Crockford对私有(private)属性(property)的解释

java - Private 可见性修饰符的含义

c++ - 从 C++ dll 中创建绘图 Canvas 的最简单方法?

c# - 访问说明符和访问修饰符之间的区别

javascript - JavaScript 中的组合、继承和聚合

java - Java 中的继承和私有(private)变量