C ++类型const * p和类型const * const p

时间:2013-04-21 08:09:42

标签: c++ pointers const mutators

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

Type const* const q相同。

3 个答案:

答案 0 :(得分:1)

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

此外,*p无法通过p进行修改。定义p以便const指向*p并保证不修改它。但是,*p,p的指针,可以被指向它的任何其他指针修改。

例如,我们可以

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

pc承诺不改变t,pnc不会改变。假设类Type带有const inspect() const方法和非const mutate()方法。那我们就可以了

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

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

pc->mutate(); 

Type const* const q指向const对象,*q不能通过q修改,就像p一样。更重要的是,指针q不能被修改:它不能再被指定一个指针。

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

答案 1 :(得分:0)

我建议阅读这篇文章,它解释了如何非常清楚地使用const,包括常量指针,指向常量的指针和指向常量的常量指针。希望你喜欢它! http://duramecho.com/ComputerInformation/WhyHowCppConst.html

答案 2 :(得分:0)

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