當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > c++模板類概念與實(shí)例
c++模板類概念與實(shí)例
時(shí)間:2018-07-30 來(lái)源:未知
模板:模板是對(duì)一種對(duì)類型進(jìn)行參數(shù)化的工具。
模板的聲明或者定義只能在全局,命名空間或者類范圍內(nèi)進(jìn)行。即不能在局部范圍,函數(shù)內(nèi)進(jìn)行。
函數(shù)模板 參數(shù)類型不一樣的但是功能及函數(shù)名一樣的函數(shù)
函數(shù)模板的聲明定義語(yǔ)法上差異不大,就像普通函數(shù)一樣使用
template
T add(T x, T y);
template
C add(C x, C y)
{
return x+y;
}
類模板 成員屬性的類型和成員函數(shù)的類不一樣但是成員屬性及函數(shù)一樣的類
template
class Demo{
public:
Demo(T1 a, T2 b);
void setx(T1 a);
static void sety(Demo &, T2 val);
T1 getx() const;
T2 gety() const;
private:
static T1 x;
T2 y;
};
友元函數(shù)模板
如果一個(gè)類是模板類,又要實(shí)現(xiàn)運(yùn)算符重載,就是一個(gè)友元函數(shù)模板;
實(shí)質(zhì)是類模板和函數(shù)模板的綜合運(yùn)用
template
class Demo{
public:
Demo(const int val);
public:
T getval() const;
void setval(const int val);
template
friend Demo
private:
T ival;
};
非類型模板參數(shù)
template
class Array{
public:
Array();
Array(const Array &);
~Array();
public:
T& at(const int id=0) const;
T& operator[](const int id)const;
private:
T* const buffer;
};
T:模板類型參數(shù);len:模板非類型參數(shù);T、len都可以有默認(rèn)值
華清遠(yuǎn)見(jiàn)90+項(xiàng)目獲批!教育部2021最新協(xié)同育人項(xiàng)目名
華清遠(yuǎn)見(jiàn)榮獲2021騰訊教育“年度口碑影響力職業(yè)教育品
華清遠(yuǎn)見(jiàn)受邀參加2021年武漢民辦高校信息學(xué)科合作聯(lián)盟
溫暖同行共創(chuàng)佳績(jī) 2019華清遠(yuǎn)見(jiàn)北京總部年會(huì)大曝光
助力高校AI人工智能學(xué)科建設(shè) 華清遠(yuǎn)見(jiàn)人工智能師資班
華清遠(yuǎn)見(jiàn)受邀參加四川省物聯(lián)網(wǎng)年會(huì),榮獲優(yōu)秀企業(yè)專家
