0

我有这个Type const* p方法。确定 p 的指针*p永远不会被修改吗?

Type const* const q.

4

2 回答 2

2

Type const* p是一个指向 const 类型的对象的指针Type。要从左到右阅读,指针指向由星号之前的所有内容定义的类型。同样的方式,Type const* const q是一个指向类型为 const 对象的 const 指针Type

此外,*p不能通过 p 进行修改。p被定义为 const 指向*p并承诺不修改它。但是,*pp 的指针可以被任何其他指向它的指针修改。

例如,我们可以有

Type t;
Type const* pc = &t;
Type *pnc = &t;

pc承诺不改变 t,pnc没有。假设类 Type 包含一个 constinspect() const方法和一个非常量mutate()方法。那么我们可以有

pc->inspect();
pnc->inspect();
pnc->mutate();

而这个会引起编译器的错误:

pc->mutate(); 

Type const* const q是指向 const 对象的 a,*q不能通过 q 修改,就像 p 一样。更重要的是,指针q不能被修改:它不能被第二次分配指针。

此外,虽然这听起来很奇怪,但您可以在代码中更改Type指针指向的类型的对象Type const* p——但不能通过p.

于 2013-04-21T08:09:41.897 回答
0

是的,它不能被修改,但是,它只会保证指针指向的变量是常量,它与Type const* const q保证指针是常量的不同

于 2013-04-21T09:29:37.163 回答