函式模板和類模板

2021-08-10 22:29:48 字數 1188 閱讀 8792

1、函式模板

template 形參名,

class 

形參名,

......> 

返回型別

函式名(引數列表)

其中template和

class

是關鍵字,

class

可以用typename

關見字代替,在這裡

typename 

和class

沒區別,

<>

括號中的引數叫模板形參,模板形參和函式形參很相像,模板形參不能為空。一但宣告了模板函式就可以用模板函式的形參名宣告類中的成員變數和成員函式,即可以在該函式中使用內建型別的地方都可以使用模板形參名。模板形參需要呼叫該模板函式時提供的模板實參來初始化模板形參,一旦編譯器確定了實際的模板實參型別就稱他例項化了函式模板的乙個例項。

例如:template

inline void singleton::release()

}2、類模板

template形參名,

class 

形參名,…

>   

class 類名;

類模板和函式模板都是以template開始後接模板形參列表組成,模板形參不能為空,一但宣告了類模板就可以用類模板的形參名宣告類中的成員變數和成員函式,即可以在類中使用內建型別的地方都可以使用模板形參名來宣告。

例如:template

class singleton

;private:

static t* t;

};3、類模板的單例和函式模板的實現

#ifndef __singleton_h__

#define __singleton_h__

//類模板

template

class singleton

;private:

static t* t;

};//函式模板

template

inline t* singleton::getinstance()

return t;

}template

inline void singleton::release()

}//引數初始化

template

t* singleton::t = null;

#endif // __single_h__

類模板,模板類和函式模板,模板函式

單整數類 雙整數類 所以c艹跟其他強型別語言為我們提供了乙個所謂模版功能 變數型別 整數 類模板的重點是模板。表示的是乙個模板,專門用於產生類的模子。例子 1 template 2 class vector 3 使用這個vector模板就可以產生很多的class 類 vector vector ve...

函式模板 和類模板

還是例子說話。函式模板 templatemax const t a,const t b 這樣用 int int a 1,b 2 max a,b float float c 1.0f,d 2.0f max c,d double double e 1.0,f 2.0 max e,f 類模板 templa...

函式模板和類模板

函式過載 函式名相同,引數型別不同,可以完成具有相似功能的邏輯.如何實現乙個通用的交換函式呢?void swap int a,int b void swap char a,char b void swap double a,double b 使用函式過載雖然可以實現,但是有以下幾個不好的地方 過載的...