亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

指針和引用參數之間的區別?

指針和引用參數之間的區別?

C++
繁星coding 2019-11-11 15:41:58
這些是一樣的嗎:int foo(bar* p) {  return p->someInt();}和int foo(bar& r) {  return r.someInt();}忽略空指針電位。這兩個函數在功能上是否相同,無論someInt()是虛擬的還是傳遞給bar的子類bar?這個切片什么嗎?bar& ref = *ptr_to_bar;
查看完整描述

3 回答

?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

有意在標準中未指定使用指針來實現C ++引用。引用更像是變量的“同義詞”,而不是指向變量的指針。當有可能意識到指針在某些情況下會顯得過大時,這種語義為編譯器帶來了一些可能的優化。

還有一些區別:

  • 您不能將NULL分配給引用。這是一個至關重要的區別,也是您偏愛另一個的主要原因。

  • 當您獲取指針的地址時,您將獲取指針變量的地址。當您獲取引用的地址時,您將獲取所引用變量的地址。

  • 您無法重新分配參考。一旦初始化,它將在整個生命周期中指向同一對象。


查看完整回答
反對 回復 2019-11-11
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

忽略可以用一個而不是另一個來完成的所有語法和可能性,以及在其他答案(針對其他問題)中解釋的指針和引用之間的區別……是的,這兩個在功能上完全相同!兩者都調用該函數,并且均能很好地處理虛函數。


不,您的線不會切開。它只是將引用直接綁定到指針指向的對象。


有關為什么要在另一個上使用的一些問題:


指針和參考之間的區別

通過指針而不是引用傳遞任何好處?

指針與參考

我不想自己提出分歧,而是委托您參加那些您想知道的事情。


查看完整回答
反對 回復 2019-11-11
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

是的,它們在功能上是相同的。由于引用將要求您在使用它之前將其設置為對象,因此您將不必處理空指針或指向無效內存的指針。

看到語義上的差異也很重要:

  • 當您實際將對象傳遞給普通對象時,請使用引用-但它太大了,因此將引用傳遞給對象而不是進行復制(如果您不修改實際對象)更有意義。

  • 當您要處理內存地址而不是對象時,請使用指針。


查看完整回答
反對 回復 2019-11-11
  • 3 回答
  • 0 關注
  • 698 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號