您好,登錄后才能下訂單哦!
泛型的定義主要有以下兩種:
1.在程序編碼中一些包含類型參數的類型,也就是說泛型的參數只可以代表類,不能代表個別對象。(這是當今較常見的定義)
2.在程序編碼中一些包含參數的類。其參數可以代表類或對象等等。(人們大多把這稱作模板)不論使用哪個定義,泛型的參數在真正使用泛型時都必須作出指明。
一些強類型編程語言支持泛型,其主要目的是加強類型安全及減少類轉換的次數,但一些支持泛型的編程語言只能達到部分目的。
泛型編程是一種不考慮具體數據類型的編程方式,可以由下面的Swap函數來進行了解
void Swap(T& a,T& b)
{
T t=a;
a=b;
b=t;
}
在這個例子中,Swap泛型的寫法中的T不是一個具體的數據類型,而是泛指任意的數據類型
一種特殊的函數可用不同的類型進行調用,看起來和普通的函數很相似,區別是類型可被參數化
template<typename T>
void Swap(T& a,T& b)
{
T t=a;
a=b;
b=t;
}
函數模板的語法規則:
template關鍵字用于聲明開始進行泛型編程
typename關鍵字用于聲明泛指類型
函數模板使用有自動類型推導使用和具體類型調用兩種
int a=0;
int b=1;
Swap(a,b);//自動推導
float c=2;
float d=3;
Swap<float>(c,d);//顯示調用
C++中的類模板以相同的方式處理不同的類型,在類聲明前使用template進行標識
<typename T>用于說明類中使用的泛指類型T
template <typename T>
class Book
{
public:
T Bo(T a,T b);
};
類模板的應用
1.只能顯示指定具體類型,無法自動推導
2.使用具體類型<type>定義對象
Book<int>book1;
Book<string>book2;
Book<char>book3;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。