我是一名C++初学者,关于指针的作用,当它既不能更改所指向的地址也不能更改其所指向的值(constEverything
在例子中)有以下问题。
例子:
int main()
{
int i = 1;
int j = 2;
int* const constPoint = &i;
*constPoint = 3; // legal
constPoint = &j; // illegal
const int* constVal = &i;
*constVal = 3; // illegal
constVal = &j; // legal
const int* const constEverything = &i;
*constEverything = 3; // illegal
constEverything = &j; // illegal
}
在这个示例中有不同类型的指针。使用constVal
可以更改地址,而使用constPoint
可以更改底层值。对于constEverything
,您都不能更改。
对我来说,这样一个指针的目的是通过常量引用传递内容。为什么我不能只使用const type &val呢?对我来说,const引用看起来更简单,它使const type* const val变得过时。