例如:爲什麼在引用(const指針)可用時使用const關鍵字聲明常量指針?
我可以創建一個常量指針,它指向一個可以通過指針更改的對象。指針不能被重新分配:
MyObj const *ptrObj = MyObj2
我爲什麼會用這個了:
MyObj &ptrObj = MyObj2
例如:爲什麼在引用(const指針)可用時使用const關鍵字聲明常量指針?
我可以創建一個常量指針,它指向一個可以通過指針更改的對象。指針不能被重新分配:
MyObj const *ptrObj = MyObj2
我爲什麼會用這個了:
MyObj &ptrObj = MyObj2
您有什麼還沒有一個const
指針,它指向一個const
對象 - 也就是說,指針可以改變,但對象不能。一個const
指針是:
MyObj *const ptrObj = &MyObj2;
至於爲什麼你會喜歡它了一個參考,你可能想使用的東西的NULL
特殊價值的靈活性 - 你沒有得到與參考。
你說錯了。你有什麼是可變指針恆對象:
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 &
對。
如果你堅持要得到一些建議,那麼我會說,「不要使用指針」。
指針和引用之間的重要區別是它們可能引用多少個對象。一個引用總是指一個對象。指針可以指向零(當指針爲空時),一個(當指針指定單個對象的位置時)或n個對象(當指針指定給數組內的某個點時)。
指針指向0到n個對象的能力意味着指針在其表示的內容中更加靈活。當指針的額外靈活性不是必需的時,通常最好使用引用。這樣,讀取你的代碼的人不必確定指針是指零,一個還是n個對象。
你不會因爲它沒有如圖所示編譯。假設'MyObj'是一個類型,'MyObj2'是'MyObj'的一個實例,你仍然需要'&'... – AJG85