C++ 传指针还是引用?
生活随笔
收集整理的這篇文章主要介紹了
C++ 传指针还是引用?
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
????? 用C++做了一段時(shí)間畢業(yè)設(shè)計(jì)了,突然有一天被困在傳指針還是傳引用的問題上。后來翻看了《C++ 編程規(guī)范》,并結(jié)合了項(xiàng)目實(shí)際情況,總結(jié)出下面結(jié)論:
傳指針
- 如果函數(shù)保存了地址。例:復(fù)制地址給類成員變量、把地址保存在函數(shù)內(nèi)靜態(tài)局部變量中。
- 如果參數(shù)是可以選的。例:允許傳入NULL值。
傳引用
- 如果函數(shù)沒有保存地址。例:僅修改了參數(shù)引用對(duì)象。
- 如果參數(shù)是不可選的,并且要求必須提供有效對(duì)象做參數(shù)。
????? 如果函數(shù)保存了地址,可能在以后直接使用或者修改地址指向的對(duì)象。如果使用傳引用的話,調(diào)用者不知道需要在棧(stack)還是在堆(heap)上分配引用對(duì)象資源。一旦調(diào)用者傳入的引用對(duì)象是在棧上,編譯器自動(dòng)回收后,函數(shù)保存的地址將不再有效!
????? 而函數(shù)保存了地址時(shí)使用傳指針,就在提示調(diào)用者傳入的指針參數(shù)指向的對(duì)象應(yīng)當(dāng)分配在堆上。
????? 當(dāng)然也有推薦全部使用傳指針的,理由是傳值和傳引用容易使調(diào)用者混淆。我不贊同這個(gè)觀點(diǎn),我打算按照上述規(guī)則重新修改畢業(yè)設(shè)計(jì)。
總結(jié)
以上是生活随笔為你收集整理的C++ 传指针还是引用?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。