c中行內函數是什麼意思C中行內函數是什麼意思?

2021-03-07 07:37:52 字數 2195 閱讀 5313

1樓:匿名使用者

行內函數具有一般函式的特性,它與一般函式所不同之處只在於函式呼叫的處理。一般函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中;而行內函數在呼叫時,是將呼叫表示式用行內函數體來替換。在使用行內函數時,應注意如下幾點:

1.在行內函數內不允許用迴圈語句和開關語句。

如果行內函數有這些語句,則編譯將該函式視同普通函式那樣產生函式呼叫**,遞迴函式(自己呼叫自己的函式)是不能被用來做行內函數的。行內函數只適合於只有1~5行的小函式。對一個含有許多語句的大函式,函式呼叫和返回的開銷相對來說微不足道,所以也沒有必要用行內函數實現。

2.行內函數的定義必須出現在行內函數第一次被呼叫之前。

3.本欄目講到的類結構中所有在類說明內部定義的函式是行內函數。

2樓:匿名使用者

在類宣告的內部宣告或定義的成員函式叫做內聯(inline)函式.

有兩種實現方式:

1.在類宣告的內部宣告,而在類宣告外部定義叫做顯式行內函數,如:

class display

display object;

inline void display::output(void)2.在類宣告的內部定義,叫做隱式行內函數,如:

class display

} 引入行內函數的目的是為了解決程式中函式呼叫的效率問題。

函式是一種更高階的抽象。它的引入使得程式設計者只關心函式的功能和使用方法,而不必關心函式功能的具體實現;函式的引入可以減少程式的目標**,實現程式**和資料的共享。但是,函式呼叫也會帶來降低效率的問題,因為呼叫函式實際上將程式執行順序轉移到函式所存放在記憶體中某個地址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。

這種轉移操作要求在轉去前要保護現場並記憶執行的地址,轉回後先要恢復現場,並按原來儲存地址繼續執行。因此,函式呼叫要有一定的時間和空間方面的開銷,於是將影響其效率。特別是對於一些函式體**不是很大,但又頻繁地被呼叫的函式來講,解決其效率問題更為重要。

引入行內函數實際上就是為了解決這一問題。

3樓:悟葛戰芮安

這最初是用來取代引數巨集的,因為巨集是由前處理器處理,編譯器並不知情,所以會存在一定問題,故設計行內函數來取代帶引數的巨集,以由編譯器接管這一「職務」,這樣就能進行型別檢查,且不會對引數進行多次求值。

但一般情況inline關鍵字只是給編譯器的建議,編譯器若認為函式足夠複雜(即函式體的開銷遠遠高於函式呼叫的開銷),則不會進行內聯。

c++行內函數具體有什麼作用?

4樓:匿名使用者

行內函數在編譯的時候將不進行函式呼叫,編譯器將行內函數的**貼上在呼叫(形式上呼叫)處,可以提高效率。

行內函數只能是**很少很簡單的函式,因為如果一個很大很複雜的函式即使設為內聯,編譯器也將自動設定該函式為非內聯。

5樓:匿名使用者

行內函數inline:引入行內函數的目的是為了解決程式中函式呼叫的效率問題,這麼說吧,程式在編譯器編譯的時候,編譯器將程式中出現的行內函數的呼叫表示式用行內函數的函式體進行替換,而對於其他的函式,都是在執行時候才被替代。這其實就是個空間代價換時間的i節省。

所以行內函數一般都是1-5行的小函式。在使用行內函數時要留神:1.

在行內函數內不允許使用迴圈語句和開關語句;2.行內函數的定義必須出現在行內函數第一次呼叫之前;3.類結構中所在的類說明內部定義的函式是行內函數。

6樓:溪貝0號

和普通函式一樣, 在函式前面加上inline 起到裝b的作用

7樓:匿名使用者

可以稍微加快執行速度,但會增加**長度

8樓:翁格虎嘉悅

行內函數就是小型函式,犧牲空間來節省函式呼叫的開銷,一般用作比較小的函式,即函式內部沒有迴圈、開關語句等

簡單的說,就是加快程式執行效率

9樓:斐冬刑浩宕

它是編譯在堆記憶體裡的,直到程式結束後它才失效,這樣能加快執行的速度,效率更高,但是行內函數一定要是短小的,否則只能起到反作用.

10樓:強文司天薇

對於一個耍要多次呼叫到的函式,而且比較小的話.最好是用行內函數.而是一個大的函式的話,可以用巨集.

行內函數其實是提示編譯器把相應的**"內聯",而不像巨集是在編譯前進行簡單的字元替換.內聯有進行語法和語義檢查的功能

C行內函數可以呼叫行內函數嗎

稱為成員函式 前面講過一般的成員函式,它是根據某種類的功能的需要來定義的。又講述了一些特殊的成員函式 建構函式 解構函式 拷貝初始化建構函式等。還有一些成員函式後面還會介紹。成員函式除了說明和定義在類中之外,還有些什麼特性,這是本節討論的問題。一 內聯性和外聯函式 類的成員函式可以分為行內函數和外聯...

c中怎麼理解類內定義的成員函式就是行內函數

在類內定義的成員函式預設為inline,不論前面是否加了inline,當然,是否內聯還是取決於編譯器啦 而在類外定義的成員函式就不是行內函數。c 中怎麼理解類內定義的成員函式就是行內函數?當你的class。public成員函式宣告的時候,只要這個函式體當中不存在switch等迴圈語句的時候,則這個函...

c中成員函式過載是什麼意思C中成員函式過載是什麼意思?

過載函式 過載,英文為overloading,大概就是很多個的意思。舉個例子,比如,我需要個函式。取2個int的最大值。很容易,函式介面應該是 1 int max int a,int b 那更進一步,我取3個 int 的最大值呢,介面可以定義為 2 int max int a,int b,int c...