3 回答
TA貢獻1805條經驗 獲得超9個贊
有意在標準中未指定使用指針來實現C ++引用。引用更像是變量的“同義詞”,而不是指向變量的指針。當有可能意識到指針在某些情況下會顯得過大時,這種語義為編譯器帶來了一些可能的優化。
還有一些區別:
您不能將NULL分配給引用。這是一個至關重要的區別,也是您偏愛另一個的主要原因。
當您獲取指針的地址時,您將獲取指針變量的地址。當您獲取引用的地址時,您將獲取所引用變量的地址。
您無法重新分配參考。一旦初始化,它將在整個生命周期中指向同一對象。
TA貢獻1793條經驗 獲得超6個贊
忽略可以用一個而不是另一個來完成的所有語法和可能性,以及在其他答案(針對其他問題)中解釋的指針和引用之間的區別……是的,這兩個在功能上完全相同!兩者都調用該函數,并且均能很好地處理虛函數。
不,您的線不會切開。它只是將引用直接綁定到指針指向的對象。
有關為什么要在另一個上使用的一些問題:
指針和參考之間的區別
通過指針而不是引用傳遞任何好處?
指針與參考
我不想自己提出分歧,而是委托您參加那些您想知道的事情。
TA貢獻1858條經驗 獲得超8個贊
是的,它們在功能上是相同的。由于引用將要求您在使用它之前將其設置為對象,因此您將不必處理空指針或指向無效內存的指針。
看到語義上的差異也很重要:
當您實際將對象傳遞給普通對象時,請使用引用-但它太大了,因此將引用傳遞給對象而不是進行復制(如果您不修改實際對象)更有意義。
當您要處理內存地址而不是對象時,請使用指針。
- 3 回答
- 0 關注
- 698 瀏覽
添加回答
舉報
