c++类型const* p和类型const* const p

C++ Type const* p and Type const* const p

本文关键字:const 类型 c++      更新时间:2023-10-16

我有这个Type const* p方法。p的点*p一定不会被修改吗?

Type const* p是指向Type类型的const对象的指针。从左到右读取,指针指向星号前面所有内容定义的类型。同理,Type const* const q是指向Type类型的const对象的const指针。

同样,*p也不能通过p修改。p被定义为const-point to *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不能像p一样通过q来修改。而且,指针q不能被修改:它不能被第二次赋值。

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

是的,它不能被修改,但是它只保证指针指向的变量是常量它和Type const* const q不一样,CC_22也保证指针是常量