&emsp有句話是這麼說的:世界是由懶人創造的,在我們的計算機世界中同樣如此。我們之前說到,為了將同乙個功能的實現簡單化,我們學習了過載的相關知識,但是過載也有乙個缺陷,就是需要將不同型別的變數所對應的函式一 一寫出,就比如我們想要實現兩個數的交換,那麼問題來了,這個數有int、double、char等等型別,如果要滿足任意型別的交換是不是要寫好多的過載函式?那完全大可不必,為了方便絕大多數的「懶人」,c++便又推出了一項黑科技——模板,在定義函式時我們先不規定是什麼型別的,只要你來我都可以接受,之後在呼叫時,我們再進行匹配,減少了太多的**量了。下面我們來具體了解一下。
&emsp模板函式正如它的名字一樣,是乙個函式系列的模板,該模板與函式的引數型別無關,它是根據實參型別的變化從而自動匹配產生特定的函式版本。
函式模板的書寫格式:
template返回值型別 函式名稱(引數列表)函式模板的使用形式舉例
#include
using
namespace std;
//單一型別的引數
template
<
typename t>
t&max
(t& num1, t& num2)
//多個虛型別
【引數的匹配原則】
類模板的形式與函式模板的使用方式類似。這裡直接看格式
template
class 類名
;
比如我們定義順序表的類
#include
using
namespace std;
template
<
class
t>
//順序表中儲存的資料型別不唯一
class
list
t list_at
(size_t pos)
;//類外定義
private
: t* _data;
size_t _size;
size_t _capacity;
};
同樣需要在外部進行泛型的宣告,具體如下:
比如我們需要找到其中某乙個位置的值
template
<
class
t>
t list
::list_at
(size_t pos)
int
main()
C 中的模板(類模板 模板類 模板函式)
1 class 一般class用於定義類,在模板引入c 後,最初定義模板的方法為 template,這裡class關鍵字表明t是乙個型別 2 typename 為了避免class在這兩個地方的使用可能給人帶來混淆,所以引入了typename這個關鍵字,它的作用同class一樣表明後面的符號為乙個型別...
c 模板入門,泛型程式設計 函式模板 類模板
目錄 1.泛型程式設計 2.函式模板 2.1 函式模板概念 2.2函式模板格式 2.3 函式模板的原理 2.4 函式模板的例項化 2.5 模板引數的匹配原則 3.類模板 3.1 類模板的定義格式 3.2 類模板的例項化 如何實現乙個通用的交換函式?使用函式過載雖然可以實現,但是有一下幾個不好的地方 ...
類模板,模板類和函式模板,模板函式
單整數類 雙整數類 所以c艹跟其他強型別語言為我們提供了乙個所謂模版功能 變數型別 整數 類模板的重點是模板。表示的是乙個模板,專門用於產生類的模子。例子 1 template 2 class vector 3 使用這個vector模板就可以產生很多的class 類 vector vector ve...