您好,登錄后才能下訂單哦!
1、函數模板
模板就是為了代碼的復用,可以把數據類型設計為參數,由我們自定義類型進行傳送;
#include<iostream> using namespace std; template<typename Type> //模板的聲明,老的版本是class替換typename; Type Max(Type a, Type b){ return a > b ? a : b; } int main(void){ cout<<Max('a', 'b')<<endl; //求最大值 cout<<Max(2, 5.45)<<endl; //這會出錯,因為類型不一樣,沒法轉換。不會將double-->int, //不會隱式轉換的。 return 0; }
模板不支持隱式轉換,類型必須明確給出(強制類型轉換);
函數模板效率并不高,只是將函數模板-------->模板函數;
上述出錯的解決方案:cout<<Max(2, (int)5.45)<<endl; 或cout<<Max((double)2, 5.45);
或cout<<Max<int>(2, 5.45)<<endl; 指定int類型的比較;
template<typename Type1, typename Type2> Type1 Max(Type1 a, Type2 b){ return a > b ? a : b; }
這樣就可以對應傳過去的數據類型;每個參數的類型一一對應,在自己根據情況寫出返回值類型。
2、類模板
C++中的類一般都是模板類;
模板類要注意的是:
(1)、在類上面寫上模板,友元函數類的聲明,最上面也要寫上模板;
(2)、在類內聲明,在類外實現時要加上模板,并且還得在作用域限定符前面加上數據類型<Type>;
模板的0初始化:
以上這些可以說明語法是成立的; Type t = Type(); 這個就是模板的初始化,根據不同類型初始化為0;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。