我有这个Type const* p方法。确定 p 的指针*p永远不会被修改吗?
与Type const* const q.
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.
是的,它不能被修改,但是,它只会保证指针指向的变量是常量,它与Type const* const q保证指针是常量的不同