2013-04-21 68 views
0

我有这个Type const* p方法。是否肯定p的指针,*p将永远不会被修改?C++类型const * p和类型const * const p

Type const* const q相同。

+0

相关,不同样的问题。我想知道如果p是一个'Type const * p',我是否可以修改p的pointee。韩国社交协会。 – octoback 2013-04-21 11:08:50

回答

1

Type const* p是一个指向常量对象的指针,其类型为Type。从左到右读,指针指向星号之前的所有东西。同样,Type const* const q是一个常量指针,指向类型为Type的常量对象。

另外,*p不能通过p进行修改。定义为p以便指向*p并承诺不对其进行修改。然而,*p,p的指针,可以通过指向它的任何其他指针进行修改。

例如,我们可以有

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

pc承诺不改变T,pnc没有。假设类类型带有const inspect() const方法和非const mutate()方法。然后,我们可以有

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

,而这一次将上升编译器的错误:

pc->mutate(); 

Type const* const q是一个指向一个const对象和*q不能至Q修改,就像页。更重要的是,指针q不能修改:它不能再次分配指针。

此外,虽然这可能听起来很奇怪,你被允许在代码中,以改变指针指向Type const* pType的对象 - 但不是通过p

0

是不能修改的,但是,它只能保证该变量的指针指向将是恒定的,它是不一样的东西Type const* const q这也保证了指针是恒定

相关问题