2 類模板的工程應用
3 小結
c++ 將模板的思想應用於類,使得類的實現不再關注資料元素的具體型別,而只管組類所需要實現的功能,一些類主要用於儲存組織資料元素,如陣列類,鍊錶類,stack 類,queue 類
同樣的,在類宣告前使用 template 進行標識,語法如下:
// 過載'-'操作符,這裡就是為了編譯通過
intmain()
編譯器編譯時,首先對類本身進行編譯,如**第 5-13 行;建立具體的類時也要進行編譯,** 20、22 行;當使用成員函式時也要進行編譯,如第 21、23、24 行。如果我們不過載減號操作符,第 24 行將編譯出錯,但是第 22 行可以編譯通過。這也說明了生成具體類時要編譯,呼叫成員函式也要編譯。
$ g++43-
1.cpp -o 43-1
$ ./43-
13let's go!
minus
// operator.h
#ifndef _operator_h_
#define _operator_h_
template
<
typename t>
class
operator
;template
<
typename t>
t operator
::add
(t a, t b)
template
<
typename t>
t operator
::minus
(t a, t b)
template
<
typename t>
t operator
::multiply
(t a, t b)
template
<
typename t>
t operator
::divide
(t a, t b)
#endif
類模板的宣告與定義應在同乙個問價中,類模板外部定義的成員函式需要加上模板<>宣告// 43-2.cpp
#include
#include
"operator.h"
using
namespace std;
intmain()
編譯執行
1、類模板使用時只能顯示指定型別$ g++ 43-2.cpp -o 43-2
$ ./43-2320
-12
2、編譯器在宣告的地方和使用的地方進行編譯
3、類模板在同乙個檔案中實現
C 深度解析 48 類模板深度剖析
1.多引數類模板 2.程式設計實驗 include using namespace std 定義類模板 template 兩個不同引數。class test 下面類模板的特化,即引數型別為指標時的特殊情況 如何處理,下面是這種情況的類實現。因引數仍是泛型,故稱為部分特化 template class...
C 深度解析 45 函式模板的概念和意義
1.發散性問題 2.程式設計實驗 include include using namespace std 巨集定義 塊 define swap t,a,b do while 0 這裡不加這個分號 可能是保證乙個整體,保證當做一條語句處理。定義函式方式 void swap int a,int b 引用...
C 中類模板的概念和意義
1,在 c 中是否能夠將泛型的思想應用於類?1,函式模板是將泛型程式設計的思想應用於函式,就有了函式模板 2,可以,常用的 c 標準庫就是 c 中的標準模板庫,c 中的 stl 就是將泛型的思想應用於一系列的函式,就得到了函式模板,當然也有很多的類模板 3,類模板就是將泛型思想應用於 c 中的類而得...