1. 程式人生 > >C++11程式設計要點總結-模板機制詳解

C++11程式設計要點總結-模板機制詳解

C++程式設計要點總結

在程式設計的過程中呢我們總會遇到一些各種各樣的問題,就比如在寫方法的時候,我們一個同樣的方法要寫好幾種類型的呢,這讓我們很傷腦筋,但是呢C++有一個強大的功能就是模板機制,這個模板機制就可以讓我們少寫很多同樣的程式碼,那麼什麼是模板呢,。我們舉一個小例子吧!比如我們要去寫交換函式,那麼我們正常的寫法是

1 void swap(int&a,int&b)
2 {
3       int temp=a;
4       a=b;
5       b=temp;
6 }

 

這樣寫大家都可以看懂,但是卻有一個問題,我們現在寫的只是交換int型別的值那麼這樣寫很簡單麼,那麼我們如果要交換一個double型別的值呢,我們在寫一個double型別的swap函式麼。

1 void swap(double&a,double&b)
2 {
3       double temp=a;
4       a=b;
5       b=temp;
6 }

這樣寫的話太麻煩了,如果我在想交換一個float型別的呢,char型別的呢,難道我要一個一個定義麼,這個時候我們模板的作用就體現出來了。
既然要講模板那麼我們首先講的是模板怎麼定義模板的定義其實很簡單,就像變數的定義方法一樣,但是和變數不同的是他是在<中定義的>廢話不多說我們來看看案例吧!

1.template<typename name> //這是第一種的定義方法
2.template<class name> //這是第二種的定義方法

那麼上面這兩種有什麼區別呢,我給你們簡單的概括一下,這裡面的class是可以變成任何型別,就比如說我們自己定義的類結構體共同體等等等等,typename就是基本資料型別,那麼什麼是基本資料型別呢,就是我們的int,char,string既然講到這裡了,那麼我們寫一個案例吧!

1 template<typename type>
2 void swap(type&a,type&b)
3 {
4     type temp=a;
5     a=b;
6     b=temp;
7 }

既然講完了定義那麼定義後的這個方法怎麼使用呢,其實使用起來也是很簡單的,和正常函式一樣傳參就好了,他會自己去匹配

1 int a = 10, b = 100;
2 swap(a,b);
3 cout << a << "\t"<<b << endl;

ps:使用必看

1.如果只有一個像上面的type那個swap一樣的話那麼你要注意一點,就是a和b的型別必須一樣,不然他不知道識別什麼。
2.使用模板的時候我們並不是一成不變的只能定義一個,其實我們可以像定義變數一樣的定義它,使用逗號隔開即可。

進入我的CSDN部落格