程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 簡單模板概念

簡單模板概念

編輯:關於C++

我以前關於模板的理解都是斷斷續續的,於是准備系統的專研一遍,以為得花去一兩天的時間,沒想到,不到一個上午,就完成了計劃,回頭一看,模板也無非就如此而已嗎!於是,這篇的題目就叫“簡單模板概念”。

拋去其他有關書和資料的講法,我將按照我自己的理解以簡單的語言描述模板。

(當然,實際上模板有它自己復雜的一面,呵呵,俺不討論這個)

1.模板的作用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

哼!為什麼一個類一個函數就只能用固定的數據類型呢?我只是類型不一樣,可是處理上是完全相同的啊,這樣代碼重復率大大的增加了啊!有沒有搞————錯!

這是我以前憤憤不平的事情,直到我發現了模板,呵呵,那可是個好東西。它可以增加代碼重用率。它使用非特定類型定義類或函數,到使用的時候再用特定的類型代替它們。

N,為了減少代碼冗余和文字重用率,這裡就不舉例子了,在以下兩節中舉例。

2.類模板

在類的定義中使用模板是我們最——常見的了,你看看,有ATL,有STL,呵呵,好多。

關——鍵字(周星馳語氣):template

關鍵符號:<>

說關鍵的就是關鍵,上面的兩個少了可不行,怎麼用呢?看完下面這個簡單的例子,你馬上就會了:

#include <iostream.h>
template <class T>
class myclass{
T temp;
public:
myclass(T name){
temp=name;
}
  T vomit(){
return temp;
}
};
  void main()
{
myclass<int> t1(2);
cout<<t1.vomit()<<endl;
myclass<char*> t2("醉拳");
cout<<t2.vomit()<<endl;
myclass<float> t3(3.14159);
cout<<t3.vomit()<<endl;
}

千萬別告訴我你沒看明白,要不然,考下來執行一遍,別告訴我你不會怎麼執行啊!倒~~~看到沒有,在通常的類的定義前面加上template<class T>,這樣T就是這個類中可以使用的類型了。在使用的時候類名和T要一起用才能正確表示這個類,並且用確定的類型代替這個T,就象上面寫的myclass<int>,myclass<char*>之類的。OK,就這麼簡單。

注意函數vomit(誰能說出它的英文意思?呵呵),在這裡是用內聯函數實現的,那把他放到類的外面去呢?該怎麼定義?呵呵,就象下面這樣子啊:

template <class T>
T myclass<T>::vomit(){
return temp;
}

首先,前面加上和類定義一樣的template <class T>,類名一定要注意,是myclass<T>而不是myclass。

OK,類模板知道這些就可以啦。

3.函數模板

和類模板一樣,函數也可以用好多類型來實現代碼重用,舉個例子得了,別不多說,自己看,或者運行一下,我都舉的是很簡單的例子,旨在揭示原理:

#include <iostream.h>
template <class T>
void f(T qie)
{
cout<<qie<<endl;
}
  #define X f<char*>
  void main()
{
f<int>(3);
f<char>('r');
X("aadf");
}

運行一下看看?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved