- 零基礎學C++程序設計
- 劉媛媛編著
- 632字
- 2022-05-06 12:28:24
5.4 內聯函數
內聯函數就是將函數內嵌到主函數中,這樣會加快函數的運行速度,從而提高代碼運行效率。內聯函數也屬于一種函數,只是其在內存中的處理機制不同。普通函數屬于外部調用,而內聯函數會將函數的代碼內聯到主函數中進行執行。C++語言使用內聯函數替代C語言中的宏定義。
5.4.1 內聯函數的定義
定義內聯函數的語法與定義普通函數的語法類似,只是在定義函數前增加關鍵字inline,其語法形式如下。

注意:如果定義時指定有返回類型也需要加return語句。
inline是C++關鍵字,在函數聲明或定義中函數返回類型前加上關鍵字inline,即可把函數指定為內聯函數。
內聯函數的執行原理與普通函數不同。內聯函數可以解決頻繁調用的函數大量消耗棧空間(棧內存)的問題。
內聯函數在調用時,會在內存中將函數中所有的代碼復制到主函數中,然后主函數依次按照順序執行即可。而普通函數在調用時,首先需要地址跳轉,然后復制數據,再執行數據,執行完后再次地址跳轉到主函數。如果頻繁調用函數,這種地址跳轉會造成大量的運算負擔。
簡單來講,普通函數的調用就像使用外接U盤傳輸數據,每次調用時都需要插上U盤,復制數據,不用時,再拔掉U盤。而內聯函數的調用就像使用硬盤傳輸數據,想用時就直接復制數據,不需要頻繁地插拔。
5.4.2 內聯函數的使用
關鍵字inline必須與函數定義放在一起才能使函數成為內聯函數,僅僅將inline放在函數聲明前面是不起任何作用的。
【示例5-7】下面定義并使用內聯函數。

程序運行結果如下。

注意:在處理的數據規模較小,并且硬件資源足夠的情況下,我們很難發現內聯函數的運算優勢。
推薦閱讀
- Learning Neo4j
- 深度實踐OpenStack:基于Python的OpenStack組件開發
- DevOps with Kubernetes
- SQL語言從入門到精通
- Mastering Yii
- 大學計算機基礎(第2版)(微課版)
- iOS應用逆向工程(第2版)
- 深入理解Android:Wi-Fi、NFC和GPS卷
- Java EE 8 Application Development
- R用戶Python學習指南:數據科學方法
- Fast Data Processing with Spark(Second Edition)
- UML2面向對象分析與設計(第2版)
- 代碼閱讀
- 深度實踐KVM:核心技術、管理運維、性能優化與項目實施
- Mastering Apache Camel