C++ 教程
模板是泛型編程的基礎(chǔ),泛型編程即以一種獨(dú)立于任何特定類型的方式編寫代碼。
模板是創(chuàng)建泛型類或函數(shù)的藍(lán)圖或公式。庫容器,比如迭代器和算法,都是泛型編程的例子,它們都使用了模板的概念。
每個容器都有一個單一的定義,比如 向量,我們可以定義許多不同類型的向量,比如 vector <int> 或 vector <string>。
您可以使用模板來定義函數(shù)和類,接下來讓我們一起來看看如何使用。
模板函數(shù)定義的一般形式如下所示:
在這里,type 是函數(shù)所使用的數(shù)據(jù)類型的占位符名稱。這個名稱可以在函數(shù)定義中使用。
下面是函數(shù)模板的實(shí)例,返回兩個數(shù)中的最大值:
當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
Max(i, j): 39 Max(f1, f2): 20.7 Max(s1, s2): World
正如我們定義函數(shù)模板一樣,我們也可以定義類模板。泛型類聲明的一般形式如下所示:
template <class type> class class-name { . . . }
在這里,type 是占位符類型名稱,可以在類被實(shí)例化的時候進(jìn)行指定。您可以使用一個逗號分隔的列表來定義多個泛型數(shù)據(jù)類型。
下面的實(shí)例定義了類 Stack<>,并實(shí)現(xiàn)了泛型方法來對元素進(jìn)行入棧出棧操作:
當(dāng)上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:
7 hello Exception: Stack<>::pop(): empty stack