參考和行內函式
- 參考
- 效率比較
- 指標和參考區別
- 行內函式
參考
參考概念:
參考不是新定義一個變數,而是給已存在變數取了一個別名,編譯器不會為參考變數開辟記憶體空間,它和它 參考的變數共用同一塊記憶體空間,
形式:
型別& 參考變數名(物件名) = 參考物體
int& ra = a;//<====定義參考型別
參考的型別必須和物體型別相同,
在我們使用參考的時候注意特性
-
參考在定義時必須初始化
-
一個變數可以有多個參考
-
參考一旦參考一個物體,再不能參考其他物體
4.當物體為加上了const參考的型別也需要加因為權限的一致,
5.參考也可以做引數和回傳值
效率比較
參考之所以能效率非常高是因為在參考就相當于是一份檔案的另一個名字,在拿到物體值的程序中,先會把物體變數進行一份臨時的拷貝然后將其作為引數給到創建的參考,因此會比直接傳值效率高很多
指標和參考區別
在語法概念上參考就是一個別名,沒有獨立空間,和其參考物體共用同一塊空間,
在底層實作上實際是有空間的,因為參考是按照指標方式來實作的,

這里就體現了特性:參考是將原值進行一份臨時拷貝,而指標是直接取原資料的地址,
參考和指標的不同點:
- 參考在定義時必須初始化,指標沒有要求
- 參考在初始化時參考一個物體后,就不能再參考其他物體,而指標可以在任何時候指向任何一個同型別
物體 - 沒有NULL參考,但有NULL指標
- 在sizeof中含義不同:參考結果為參考型別的大小,但指標始終是地址空間所占位元組個數(32位平臺下占
4個位元組) - 參考自加即參考的物體增加1,指標自加即指標向后偏移一個型別的大小
- 有多級指標,但是沒有多級參考
- 訪問物體方式不同,指標需要顯式解參考,參考編譯器自己處理
- 參考比指標使用起來相對更安全
行內函式
行內函式是什么?
以inline修飾的函式叫做行內函式,編譯時C++編譯器會在呼叫行內函式的地方展開,沒有函式壓堆疊的開銷,
行內函式提升程式運行的效率,
特性:
- inline是一種以空間換時間的做法,省去呼叫函式額開銷,所以代碼很長或者有回圈/遞回的函式不適宜
使用作為行內函式, - inline對于編譯器而言只是一個建議,編譯器會自動優化,如果定義為inline的函式體內有回圈/遞回等
等,編譯器優化時會忽略掉行內, - inline不建議宣告和定義分離,分離會導致鏈接錯誤,因為inline被展開,就沒有函式地址了,鏈接就會
找不到,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/256009.html
標籤:其他
上一篇:淺談 比賽中的配對次數 問題
