什麼是內聯函數

類:

 類申明:以數據成員的方式描述數據部分,以成員函數(被稱爲方法)的方式描述公有接口。

類方法定義:描述如何實現類成員函數。

簡單的說:類聲明提供了類的藍圖,而方法定義則提供了細節。

 

使用類,必須瞭解公共接口,編寫類,必須創建公共接口。

 

內聯函數的特殊規則要求在每個使用他們的文件中都對其進行定義。

一、inline 關鍵字用來定義一個類的內聯函數,引入它的主要原因是用它替代C中表達式形式的宏定義。 
  表達式形式的宏定義一例:
  #define ExpressionName(Var1,Var2) (Var1+Var2)*(Var1-Var2)
  爲什麼要取代這種形式呢,且聽我道來:
  1. 首先談一下在C中使用這種形式宏定義的原因,C語言是一個效率很高的語言,這種宏定義在形式及使用上像一個函數,但它使用預處理器實現,沒有了參數壓棧,代碼生成 等一系列的操作,因此,效率很高,這是它在C中被使用的一個主要原因。
  2. 這種宏定義在形式上類似於一個函數,但在使用它時,僅僅只是做預處理器符號表中的簡單替換,因此它不能進行參數有效性的檢測,也就不能享受C++編譯器嚴格類型檢查的好處,另外它的返回值也不能被強制轉換爲可轉換的合適的類型,這樣,它的使用就存在着一系列的隱患和侷限性。
  3. 在C++中引入了類及類的訪問控制,這樣,如果一個操作或者說一個表達式涉及到類的保護成員或私有成員,你就不可能使用這種宏定義來實現(因爲無法將this指針放在合適的位置)。
  4. inline 推出的目的,也正是爲了取代這種表達式形式的宏定義,它消除了它的缺點,同時又很好地繼承了它的優點。
  爲什麼inline能很好地取代表達式形式的預定義呢?
  對應於上面的1-3點,闡述如下:
  1. inline 定義的類的內聯函數,函數的代碼被放入符號表中,在使用時直接進行替換,(像宏一樣展開),沒有了調用的開銷,效率也很高。
  2. 很明顯,類的內聯函數也是一個真正的函數,編譯器在調用一個內聯函數時,會首先檢查它的參數的類型,保證調用正確。然後進行一系列的相關檢查,就像對待任何一個真正的函數一樣。這樣就消除了它的隱患和侷限性。
  3. inline 可以作爲某個類的成員函數,當然就可以在其中使用所在類的保護成員及私有成員。
  在何時使用inline函數:
  首先,你可以使用inline函數完全取代表達式形式的宏定義。
  另外要注意,內聯函數一般只會用在函數內容非常簡單的時候,這是因爲,內聯函數的代碼會在任何調用它的地方展開,如果函數太複雜,代碼膨脹帶來的惡果很可能會大於效率的提高帶來的益處。內聯函數最重要的使用地方是用於類的存取函數。
  如何使用類的inline函數:
  簡單提一下inline 的使用吧:
  1.在類中定義這種函數:
  class ClassName{
  .....
  ....
  GetWidth(){return m_lPicWidth;}; // 如果在類中直接定義,可以不使用inline修飾
  ....
  ....
  }
  2.在類中聲明,在類外定義:
  class ClassName{
  .....
  ....
  GetWidth(); // 如果在類中直接定義,可以不使用inline修飾
  ....
  ....
  }
  inline return_type ClassName::GetWidth(){
  return m_lPicWidth;
  }
  二、CSS
  display:inline
  它可以讓行內顯示爲塊的元素,變爲行內顯示,例如
  DIV1
  DIV2
  這裏DIV1和DIV2分別佔一行,但是你給他們加上屬性後變了
  DIV1
  DIV2
  DIV1和DIV2這時候顯示在同一行了,試試看吧
  和 display:inline 對應的是 display:block,block 會讓應用了該 CSS 屬性的 HTML 標記變成塊級別元素,例如 SPAN 是行內顯示的,但是你加了 display:block 屬性就不一樣了
  [font style= "display:block "] SPAN1 [/font]
  [font style= "display:block "] SPAN2 [/font]
  block一般一個塊佔一行,除非float
  inline是自動排爲一行,就象段內的文字一樣,可成爲多行。
  display:inline比較經典的用法是用在 <ul> 下的 <li> 中
  display:inline 對應不顯示爲 display:none
  display:block 對應不顯示爲 hidden
  說通俗點 樣式爲none的元素不佔位置,而樣式爲hidden的元素雖然不顯示但還是佔地方
  附:inline 內置,在線的,聯機的

 

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

  1.類內定義的函數是內聯函數,類外定義的函數是非內聯函數(短函數可以定義在類內,長函數可以定義在類外)。

  2.可以爲類外定義的函數指定 inline 關鍵字,強行爲內聯函數。

  3.在內聯函數內不允許用循環語句和開關語句。

  4.內聯函數的定義必須出現在內聯函數第一次被調用之前。

發佈了39 篇原創文章 · 獲贊 7 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章