VC (五)特殊函式形式

2022-04-02 21:23:16 字數 1054 閱讀 8779

1、函式模板(template)

當需要定義多個具有相同函式名的函式時,需要進行函式過載(overload)。函式過載的條件是這些函式的形參列表各不相同。事實上,所有函式都有簽名,函式的簽名由函式名稱和形參列表確定,程式中每個函式都必須有唯一的簽名。同理,不同的返回值型別不足以區別函式。

當多個函式過載時,僅僅因為變數和形參型別不同,而演算法和流程一致,為避免對每個函式重複編寫本質上相同的**,可以採用函式模板。如下:

template

t max(t x, int len)

呼叫時如下:

int ivalus = ;

double dvalues = ;

int imax = max(ivalues, 4);

double dmax = max(dvalues, 4);

編譯器會自動識別並生成相應**。

2、泛型函式(generic)

泛型函式的作用與函式模板相似,但工作原理上有很大不同:使用函式模板時,編譯器根據模板生成需要的函式的源**,然後與其他**一起編譯,在某些情況下,將導致許多函式的產生,從而使執行模組的體積增大。而泛型函式本身將被編譯器編譯,當呼叫某個與泛型函式說明匹配的函式時,實際型別將在執行時替代型別形參,這樣一來沒有額外**在編譯時生成。泛型函式的定義與函式模板類似,如下:

genericwhere t:icomparable

t max(array^ x)

關鍵字where後面內容,是對在使用泛型函式時,用於替代t的實際型別的約束條件,在此處表示該型別必需實現icomparable介面。

3、內聯函式(inline)

當函式定義為內聯函式時,編輯器將設法以函式體**替代函式呼叫,所以內聯函式最適合用於非常短小的、頻繁呼叫的簡單函式,如迴圈體內的簡單函式呼叫等。通過內聯函式可以避免呼叫函式時的系統開銷,從而加速**執行。如:

inline double multiplication(double da, double db) ;

double dm = 0;

int i;

for (i=0;i<10000;i++) 

c 學習之特殊形式的函式

知識點 1.程式 資料 演算法 2.結構化程式設計方法的基本思想 模組化設計 重用函式 分類管理資料 結構化程式設計所棉鈴的問題 開發大型軟體系統 對大型軟體的維護 公升級 解決方法 資料類 資料類 資料 演算法 3.物件導向的初始化形式 int x 10 y c 語言風格4.c 語言常變數 con...

mysql 特殊函式 mysql 的特殊函式

1.format 函式 函式用於對字段的顯示進行格式化 語法 select format column name,format from table name column name 必需。要格式化的字段 format 必需。規定格式。2.ucase 函式 ucase 函式把字段的值轉換為大寫。語法...

變數定義及用法的特殊形式實戰

例1 經過反引號的 date 命令測試 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 root xcn echo date date 單引號時看到啥顯示啥 root xcn echo date fri jun 16 14 45 29 cst 2...