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