2011-12-05 103 views

回答

4

您有什麼還沒有一個const指針,它指向一個const對象 - 也就是說,指針可以改變,但對象不能。一個const指針是:

MyObj *const ptrObj = &MyObj2; 

至於爲什麼你會喜歡它了一個參考,你可能想使用的東西的NULL特殊價值的靈活性 - 你沒有得到與參考。

2

你說錯了。你有什麼是可變指針對象:

T const * p; 
p = 0;   // OK, p isn't const 
p->mutate();  // Error! *p is const 
T const & r = *p; // "same thing" 

你真正想要的是一個不斷指針可變對象:

T * const p = &x; // OK, cannot change p 
T & r = x;  // "same thing" 
p->mutate();  // OK, *p is mutable 

事實上,引用在道德上等同於常數指針,即T & vs T * const,以及常數版本T const &對。

如果你堅持要得到一些建議,那麼我會說,「不要使用指針」。

1

指針和引用之間的重要區別是它們可能引用多少個對象。一個引用總是指一個對象。指針可以指向零(當指針爲空時),一個(當指針指定單個對象的位置時)或n個對象(當指針指定給數組內的某個點時)。

指針指向0到n個對象的能力意味着指針在其表示的內容中更加靈活。當指針的額外靈活性不是必需的時,通常最好使用引用。這樣,讀取你的代碼的人不必確定指針是指零,一個還是n個對象。

相關問題