我有这个Type const* p
方法。是否确定p的指针,*p
永远不会被修改?
与Type const* const q
相同。
答案 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
不同,它也保证指针是常量