真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

泛型編程之函數(shù)模板-創(chuàng)新互聯(lián)

》模板的引入,為什么要使用模板?

創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鳳縣企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),鳳縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

 在程序設(shè)計中往往存在這樣一種現(xiàn)象:兩個或多個函數(shù)的函數(shù)體完全相同,差別僅在于他們的參數(shù)類型不同,就需要分別給不同的數(shù)據(jù)類型定義不同的版本。

 解決以上問題的一個比較好的方法就是使用模板。模板是實現(xiàn)代碼重用機制的一種工具,他可以實現(xiàn)類型參數(shù)化,即把類型定義為參數(shù),從而實現(xiàn)代碼復(fù)用。

》模板的分類:

 模板分為函數(shù)模板和類模板。他們分別允許用戶構(gòu)造模板函數(shù)和模板類。

》函數(shù)模板:

 建立一個通用函數(shù),其函數(shù)返回類型和形參類型不確定,用一個虛擬的類型來代表,這個通用函數(shù)就稱為函數(shù)模板。

函數(shù)模板聲明格式:

 template

 返回類型 函數(shù)名(模板形參表)

 {函數(shù)體

 }

其中template是一個表明聲明一個模板的關(guān)鍵字;

typename也可以用class作用一樣表示其后是一個虛擬的類型名;

類型參數(shù)實際上是一個類型名;

例:

template 
T max(T x, T y)
{
	return (x > y) ? x : y;
}

》如何使用函數(shù)模板

上面max()函數(shù)代表一類函數(shù),要使用這個模板函數(shù)就需要將T實例化為確定的數(shù)據(jù)類型,這個實例化的參數(shù)就叫做模板實參。

函數(shù)名(模板實參表)

例:

template 
T max(T x, T y)
{
return (x > y) ? x : y;
}
int main()
{
int i1 = 19,i2=23;
double d1 = 50.344, d2 = 4656.346;
char c1 = 'k', c2 = 'n';
cout << "The max of i1,i2 is= " << max(i1, i2) << endl;
cout << "The max of d1,d2 is= " << max(d1, d2) << endl;
cout << "The max of c1,c2 is= " << max(c1, c2) << endl;
return 0;
}

結(jié)果:

     泛型編程之函數(shù)模板

從上例看出,函數(shù)模板提供了一類函數(shù)的抽象,它以類型參數(shù)T為參數(shù)及函數(shù)返回值的虛擬類型。函數(shù)模板經(jīng)實例化而生成的具體函數(shù)稱為模板函數(shù)。

》一個和指針相關(guān)的函數(shù)模板

template 
AT sum(AT* array, int size = 0)
{
AT total = 0;
for (int i = 0; i < size; i++)
{
total += array[i];
}
return total;
};
int int_array[] = { 11, 22, 33, 44, 55, 66, 77, 88, 99, 1010 };
double double_array[] = { 11.1,22.2,33.3, 44.4, 55.5, 66.6, 77.7, 88.8, 99.9, 100.10 };
int main()
{
int itotal = sum(int_array, 10);
double dtotal = sum(double_array, 10);
cout << "這個整型數(shù)組的元素之和是:" << itotal << endl;
cout << "這個雙精度型數(shù)組的元素之和是:" << dtotal << endl;
return 0;
}

結(jié)果:

泛型編程之函數(shù)模板

在程序中生成了兩個模板函數(shù),sum(int_array)和sum(double_array)分別將類型參數(shù)實例化為int型和double型。

》同樣的函數(shù)模板也允許使用多個類型參數(shù),但是template定義部分的每個類型參數(shù)前必須要有關(guān)鍵字typename。

template 
void two_para(para1 x, para2 y)
{
cout << x << ' ' << y << endl;
}
int main()
{
two_para(99, "zhang");
two_para(123.45, 888L);
return 0;
}

結(jié)果:

泛型編程之函數(shù)模板

1.在這個程序中,生成了兩個模板函數(shù),“two_para(99,"zhang")”,分別用模板實參int,char*將類型參數(shù)para1和para2實例化,“two_para(123.45,888L)”,分別用模板實參double,long將類型參數(shù)para1和para2實例化,

2.在template語句與函數(shù)模板定義語句之前不允許插入別的語句。

3.同一般函數(shù)一樣,函數(shù)模板也可以重載。

template 
Type min(Type x, Type y)
{
	return (x < y) ? x : y;
}

template 
Type min(Type x, Type y, Type z)
{
	Type t;
	t = (x < y) ? x : y;
	return (t < z) ? t: z;
}

int main()
{
	int m = 10, n = 20, min2;
	double a = 10.1, b = 20.2, c = 30.3, min3;
	min2 = min(m, n);
	min3 = min(a, b, c);
	cout << "min(" << m << "," << n << ")=" << min2 << endl;
	cout << "min(" << a << "," << b << "," << c << ")=" << min3 << endl;
	return 0;
}

結(jié)果:

 泛型編程之函數(shù)模板

》函數(shù)模板和非函數(shù)模板可以重載,調(diào)用順序是:首先尋找一個參數(shù)完全匹配的非函數(shù)模板,如果找到就調(diào)用它,如果沒有就尋找函數(shù)模板將其實例化,產(chǎn)生一個匹配的模板函數(shù)。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


網(wǎng)站欄目:泛型編程之函數(shù)模板-創(chuàng)新互聯(lián)
本文鏈接:http://weahome.cn/article/ceocpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部