日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c语言模板类,C++类模板(Class Template)

發布時間:2024/3/26 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言模板类,C++类模板(Class Template) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++ 除了支持函數模板,還支持類模板(Class Template)。函數模板中定義的類型參數可以用在函數聲明和函數定義中,類模板中定義的類型參數可以用在類聲明和類實現中。類模板的目的同樣是將數據的類型參數化。

聲明類模板的語法為:

template class 類名{

//TODO:

};

類模板和函數模板都是以 template 開頭(當然也可以使用 class,目前來講它們沒有任何區別),后跟類型參數;類型參數不能為空,多個類型參數用逗號隔開。

一但聲明了類模板,就可以將類型參數用于類的成員函數和成員變量了。換句話說,原來使用 int、float、char 等內置類型的地方,都可以用類型參數來代替。

假如我們現在要定義一個類來表示坐標,要求坐標的數據類型可以是整數、小數和字符串,例如:

x = 10、y = 10

x = 12.88、y = 129.65

x = "東經180度"、y = "北緯210度"

這個時候就可以使用類模板,請看下面的代碼:

template //這里不能有分號

class Point{

public:

Point(T1 x, T2 y): m_x(x), m_y(y){ }

public:

T1 getX() const; //獲取x坐標

void setX(T1 x); //設置x坐標

T2 getY() const; //獲取y坐標

void setY(T2 y); //設置y坐標

private:

T1 m_x; //x坐標

T2 m_y; //y坐標

};

x 坐標和 y 坐標的數據類型不確定,借助類模板可以將數據類型參數化,這樣就不必定義多個類了。

注意:模板頭和類頭是一個整體,可以換行,但是中間不能有分號。

上面的代碼僅僅是類的聲明,我們還需要在類外定義成員函數。在類外定義成員函數時仍然需要帶上模板頭,格式為:

template

返回值類型 類名::函數名(形參列表){

//TODO:

}

第一行是模板頭,第二行是函數頭,它們可以合并到一行,不過為了讓代碼格式更加清晰,一般是將它們分成兩行。

下面就對 Point 類的成員函數進行定義:

template //模板頭

T1 Point::getX() const /*函數頭*/ {

return m_x;

}

template

void Point::setX(T1 x){

m_x = x;

}

template

T2 Point::getY() const{

return m_y;

}

template

void Point::setY(T2 y){

m_y = y;

}

請讀者仔細觀察代碼,除了 template 關鍵字后面要指明類型參數,類名 Point 后面也要帶上類型參數,只是不加 typename 關鍵字了。另外需要注意的是,在類外定義成員函數時,template 后面的類型參數要和類聲明時的一致。

使用類模板創建對象

上面的兩段代碼完成了類的定義,接下來就可以使用該類創建對象了。使用類模板創建對象時,需要指明具體的數據類型。請看下面的代碼:

Point p1(10, 20);

Point p2(10, 15.5);

Point p3(12.4, "東經180度");

與函數模板不同的是,類模板在實例化時必須顯式地指明數據類型,編譯器不能根據給定的數據推演出數據類型。

除了對象變量,我們也可以使用對象指針的方式來實例化:

Point *p1 = new Point(10.6, 109.3);

Point *p = new Point("東經180度", "北緯210度");

需要注意的是,賦值號兩邊都要指明具體的數據類型,且要保持一致。下面的寫法是錯誤的:

//賦值號兩邊的數據類型不一致

Point *p = new Point(10.6, 109);

//賦值號右邊沒有指明數據類型

Point *p = new Point(10.6, 109);

綜合示例

將上面的類定義和類實例化的代碼整合起來,構成一個完整的示例,如下所示:

#include

using namespace std;

template //這里不能有分號

class Point{

public:

Point(T1 x, T2 y): m_x(x), m_y(y){ }

public:

T1 getX() const; //獲取x坐標

void setX(T1 x); //設置x坐標

T2 getY() const; //獲取y坐標

void setY(T2 y); //設置y坐標

private:

T1 m_x; //x坐標

T2 m_y; //y坐標

};

template //模板頭

T1 Point::getX() const /*函數頭*/ {

return m_x;

}

template

void Point::setX(T1 x){

m_x = x;

}

template

T2 Point::getY() const{

return m_y;

}

template

void Point::setY(T2 y){

m_y = y;

}

int main(){

Point p1(10, 20);

cout<

Point p2(10, "東經180度");

cout<

Point *p3 = new Point("東經180度", "北緯210度");

cout<getX()<getY()<

return 0;

}

運行結果:

x=10, y=20

x=10, y=東經180度

x=東經180度, y=北緯210度

在定義類型參數時我們使用了 class,而不是 typename,這樣做的目的是讓讀者對兩種寫法都熟悉。

總結

以上是生活随笔為你收集整理的c语言模板类,C++类模板(Class Template)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本免费一区二区在线 | 国产精品无码成人网站视频 | 91视频免费看片 | 精品在线二区 | 欧美vieox另类极品 | 国产成人精品免费看视频 | 日韩国产欧美在线观看 | 九色porny自拍视频 | 精品一区二区在线视频 | 艳母在线视频 | 国产精品xxxx | 91成人福利 | 女同另类之国产女同 | 肥臀av| 欧美一区二区大片 | 99九九视频 | 欧洲免费av| 精品人妻无码专区视频 | 亚洲videos| 国产成人精品一区二区 | 播放灌醉水嫩大学生国内精品 | 72成人网 | 国产91精品高潮白浆喷水 | 久久作爱视频 | 亚州国产 | 日韩v欧美| 在线观看视频一区二区 | 国产香蕉97碰碰碰视频在线观看 | 国产午夜性春猛交ⅹxxx | 偷拍老头老太高潮抽搐 | 久久久久亚洲日日精品 | 最新日韩在线 | 成人一二三四区 | 毛片大全在线观看 | 干丰满少妇| 91极品美女 | 成人作爱视频 | 又黄又湿的网站 | 国产黄视频在线观看 | 97在线视频人妻无码 | 黄色一几片 | 国产永久毛片 | 无码无套少妇毛多18pxxxx | 亚洲一级片在线播放 | 亚洲免费视频一区二区 | 婷婷激情电影 | 色婷婷激情av | 亚洲天堂一区二区三区四区 | 精品久久久久中文慕人妻 | 毛片毛片毛片毛片毛片毛片 | 三级伦理片 | 免费二区 | 一级特黄录像免费看 | 国产精品九九九 | 伊人久久久久久久久久 | 好屌妞视频这里只有精品 | 欧美综合精品 | 最新欧美日韩 | 97福利在线 | 天天操天天干视频 | 国产中文在线观看 | 亚洲一区二区免费电影 | 无码精品人妻一区二区三区漫画 | 在线观看天堂av | 久插视频 | 午夜久久福利 | 最新自拍偷拍 | 亚洲精品久久久久久久蜜桃臀 | 在线观看天堂av | 国产中文字幕久久 | 亚州成人| 午夜xx| av网址在线| 99精品色 | 午夜激情视频在线 | 中文字幕第 | 四虎影院在线视频 | 苍井空张开腿实干12次 | 国产高清成人久久 | 99xav| 99精品人妻国产毛片 | 潘金莲裸体一级淫片视频 | 日韩精品欧美在线 | 欧洲美一区二区三区亚洲 | 精品一区电影 | 日本美女性高潮 | 午夜免费看视频 | 成人毛片在线视频 | 国产无遮无挡120秒 欧美综合图片 | 深夜视频在线观看免费 | 精品视频三区 | 欧美乱大交xxxxx春色视频 | 婷婷激情四射 | 黑丝美女一区二区 | 美女色黄网站 | 麻豆综合| 不卡av片 | 欧美熟妇精品黑人巨大一二三区 | 91久久人澡人人添人人爽欧美 |