2013-04-21 99 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這也保證了指針是恆定

相關問題