const 指针与指针:C++

const pointer vs pointer: C++

我是 C++ 的新手,正在尝试弄清楚我应该做什么。

以下选项在性能上是否存在差异:

const DATATYPE* name

DATATYPE* name

在这种情况下,实际上不应该有任何性能提升,因为示例中的关键字 const 仅告诉编译器指针访问将被限制为只读访问(这只会提高性能,例如在某些情况下具有互斥保护或原子指针)。但是指针本身要成为一个变量!

但是,如果您打算使用一个指向只读值的常量指针,那么您必须这样声明它:

const DATATYPE *const name

即使在这种修改后的情况下,大多数编译器也不会看到任何性能改进,因为好的编译器会自动检测某些东西是否实际上被视为给定代码中的常量 and/or 只读实体,然后相应地(内部)进行优化,而程序员不必为到处都是冗余和过多的“常量修饰”而烦恼。 (并不是说所有 const 的使用都是多余的——远非如此,例如 const 显式地用于定义只读实体是一个好的和安全的 API。)