內聯函式,是為了解決程式中函式呼叫的效率問題。函式過載允許程式設計師定義函式時使用相同的函式名,以不同資料型別的資料作為形參,實現相似功能的函式。
在呼叫函式時,系統要將程式當前的一些狀態資訊、斷點資訊儲存到堆疊中,同時轉到被調函式的**處去執行函式體語句,這些引數儲存與引數恢復的過程需要時間和空間開銷,使程式執行效率降低。為此才引入內聯函式。
內聯函式也稱為內嵌函式,在使用內聯函式時,c++編譯器直接將被調函式的函式的**插入到呼叫該函式的語句處,在程式執行時不再進行函式呼叫和返回,從而消除函式呼叫和返回的系統開銷,提高了程式執行效率。
格式:inline 型別識別符號 函式名(引數列表)
內聯函式的定義與普通函式基本相同,只是在函式定義前加上關鍵字 inline。
【例項】
內聯函式不同於一般函式呼叫,主要體現在是**替換而不是呼叫,減少了函式呼叫時的系統開銷,提高了效率。
注意:(1)內聯函式的函式體內不允許有迴圈語句和開關 switch語句。如果內聯函式內含有這些語句,則按普通函式處理。
(2)內聯函式的函式體內不能包含任何靜態變數和陣列說明,也不能有遞迴呼叫。
(3)內聯函式的函式體中語句不宜過多,一般以1-5行為宜。
在c++中允許兩個或兩個以上的函式在定義時重名,但要求函式的引數列表不同,如引數的型別不同、引數的個數不同等。這種共享同名函式的定義稱為函式過載。過載函式的意義在於,可以用同乙個函式名字定義和呼叫多個功能相近的函式,編譯器能夠根據函式引數的具體情況決定呼叫哪個函式。
【例項】使用函式過載的方法,設計兩個求面積的函式:
area(float r); //求圓面積,需傳遞乙個引數
area(float x,float y); //求矩形面積,需傳遞兩個引數
注意:(1)過載函式的區別不能只是函式的返回值不同個,應至少在形參個數,引數型別,引數順序上有所不同。
(2)應使所有的過載函式的功能相同。
C 函式三(內聯函式和函式過載)
內聯函式,是為了解決程式中函式呼叫的效率問題。函式過載允許程式設計師 定義函式時使用相同的函式名,以不同資料型別的資料作為形參,實現相似功能的函式。在呼叫函式時,系統要將程式當前的一些狀態資訊 斷點資訊儲存到堆疊中,同時轉到被調函式的 處去執行函式體語句,這些引數儲存與引數恢復的過程需要時間和空間開...
內聯函式和函式過載
內聯函式 巨集可以避免函式呼叫帶來的開銷,但存在兩個問題 1 巨集沒有作用域,沒有型別檢測,另外定義巨集時,需要時刻注意加括號,除此之外,當傳入變數自增時,會出現不可避免的錯誤。2 c 中巨集不能作為類的成員函式,因為預處理器不能訪問類成員。內聯函式主要為了替代巨集,另外,類中的成員函式預設加了in...
函式介紹(內聯函式和函式過載)
過載概念 同乙個識別符號在不同的上下文有不同的意義 函式過載 同乙個函式名定義不同的函式 當函式名和不同的引數搭配時,表達的意思也不同 由函式名和函式引數列表決定的,與返回值無關係 函式過載至少滿足以下條件 引數個數不同 引數型別不同 引數順序不同 編譯器呼叫函式過載時的原則 將所有同名函式作為候選...