為了提高程式的可重用性,c++中引入了模板這一概念。
舉例來說,為了實現乙個交換函式,因為資料型別的關係,可能你需要實現好幾種只是引數型別有差異的相同的函式,這大大降低了我們的工作效率;但通過使用模板我們可以實現乙個萬能的交換函式。
函式模板形式如下:
template
返回值型別 模板名(形參表)
其中的 class 關鍵字也可以用typename關鍵字替換,例如:
template
模板過載
在有多個函式和函式模板名字相同的情況下,一條函式呼叫語句到底應該被匹配成對哪個函式或哪個模板的呼叫呢? c++編譯器遵循以下先後順序:
先找引數完全匹配的普通函式(非由模板例項化得到的函式)。
再找引數完全匹配的模板函式。
再找實參經過自動型別轉換後能夠匹配的普通函式。
如果上面的都找不到,則報錯。
**說明
#includeusing namespace std;
templatevoid swap(t& a, t& b)
//編譯器由模板自動生成函式的過程叫做模板的例項化,生成的函式叫做模板函式
//通過 模板名《型別名1,型別名2,...>(顯式定義)這種方式告訴編譯器應該如何例項化
//模板函式templatetemplatet sum(int a)
//模板函式可以不只有乙個引數
templatet1 print(t1 arg1, t2 arg2)
//模板過載
void test(int num1,int num2)
templatevoid test(t num1,t num2)
templatevoid test(t1 num1,t2 num2)
int main()
進製轉換模板(未完待續)
一,十進位制轉其他進製 1 十進位制轉r進製 includeusing namespace std void pre int n,int r 3.十進位制轉十六進製制 直接 x x輸出就行了 includeusing namespace std int main 二,其他進製轉十進位制 1.二進位制...
nginx 未完待續
yum install y pcre yum install y pcre devel yum install y openssl yum install y openssl devel yum install y zlib yum install y gccyum安裝 yum install y ...
sqlparse(未完待續)
sqlparse.split sql,encoding none sql 包含乙個或多個sql語句的字串 encoding 語句的編碼 可選 sql select from foo select from bar sql list sqlparse.split sql print sql list ...