1

我理解final在 Java 或constC++ 中强制常量值并允许编译器对使用您编写的模块的任何人强制执行该值的概念。

我无法看到您希望在哪里有一个const指针,为什么您不希望指针改变而不管数据是否恒定:

例如

为什么这个?

char greetings[] = "Hello";

char * const p = greetings;  // const pointer, non-const data

const char * const p = greetings; // const pointer and const data

我无法想象一个你想保留指针常量的例子,它可能是一个文件句柄或类似的东西吗?还是只是指向您不想更改的对象的指针?

4

1 回答 1

2

出于以下几个原因,您可能希望使指针本身保持不变:

  • 帮助其他人理解您的代码- 当您声明一个指针并使其成为常量时,您会告诉读者在您的函数的其余部分中没有对该指针进行任何更改,因此他们会更好地了解您如何使用该指针。
  • 帮助其他人维护您的代码- 在您之后维护您的代码的其他人将更好地了解您希望使用指针做什么。如果他尝试传递非常量引用或指向您声明的指针的指针,const编译器将捕获此错误。
  • 启用编译器优化- 当编译器看到声明const的内容时,他们可以更积极地优化。
于 2015-01-10T03:07:02.957 回答