指標與引用參數:詳細檢查
問題:
問題:做指針參數(例如指針參數,int foo(bar* p) { ... })和引用參數(例如,int foo(bar& r) { ... })在 C 中的行為相同?
答案:指標和引用之間的區別超出了標準中的實作細節。引用體現了語法糖概念,本質上是為變數創建別名。這允許編譯器最佳化指標會增加複雜性的程式碼。
功能等價:假設沒有空指標問題,函數foo(bar* p) 和foo如果someInt() 方法不是虛擬的, (bar& r)本質上是等價的。這兩個函數都透過參數直接存取物件的成員函數。但是,如果someInt() 是虛擬的,則基於引用的參數函數(foo(bar& r)) 將根據實際物件的類型呼叫正確的方法,而基於指標的函數(foo(bar* p)) 將始終調用基類方法。
分配給引用:賦值 bar& ref = *ptr_to_bar 不會導致任何切片。引用 ref 將為 ptr_to_bar 指向的物件起別名,允許您直接存取其成員。
以上是C 中指標和引用參數的功能相同嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!