什么情况可能需要使用const指针来指向(非const \ const)数据

时间:2015-01-10 02:52:48

标签: c++ pointers const const-pointer

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

我无法看到你想要一个const指针的位置,为什么你不希望指针发生变化而不管数据是否恒定:

例如

为什么会这样?

char greetings[] = "Hello";

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

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

我无法想象你想要保持指针const的exmaple,它可能是文件句柄还是类似的东西?或只是一个指向你不想改变的对象的指针?

1 个答案:

答案 0 :(得分:2)

您可能希望将指针本身设为常数,原因如下:

  • 帮助他人理解您的代码 - 当您声明指针并使其保持不变时,您告诉读者在您的函数的其余部分中没有对该指针进行任何更改,因此他们会更好地了解如何使用指针。
  • 帮助其他人维护您的代码 - 在您之后维护代码的其他人将更好地了解您对指针的期望。如果他试图传递非常量引用或指向您声明为const的指针的指针,编译器将捕获此错误。
  • 启用编译器优化 - 当编译器看到声明为const的内容时,他们可以更积极地进行优化。