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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++类模板(一)

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

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

聲明類模板的語法為:

template<typename 類型參數1 , typename 類型參數2 , …> class 類名{//TODO: };

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

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

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

  • x = 10、y = 10
  • x = 12.88、y = 129.65
  • x = “東經180度”、y = “北緯210度”

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

#include <iostream> using namespace std;template <class T1,typename T2> class Point{public:Point(T1 x,T2 y):m_x(x),m_y(y){};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 <class T1,class T2> //模板頭//函數頭T1 Point<T1,T2>::getX() const {return m_x; }template <class T1,class T2> //模板頭//函數頭 void Point<T1,T2>::setX(T1 x) {m_x=x; }template <class T1,class T2> //模板頭 //函數頭 T2 Point<T1,T2>::getY() const {return m_y; }template <class T1,class T2> //模板頭//函數頭 void Point<T1,T2>::setY(T2 y) {m_y=y; }int main(){Point <int,int > p1(10,20);cout <<"x="<<p1.getX()<<", y="<<p1.getY()<<endl;Point <int,char *> p2(10,"東經180度");cout <<"x="<<p2.getX()<<", y="<<p2.getY()<<endl;Point <char *,char *> p3("東經180度","北緯38度");cout <<"x="<<p3.getX()<<", y="<<p3.getY()<<endl;return 0;}

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

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

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

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