類模板:是對一批僅僅成員資料型別不同的類的抽象,程式設計師只要為這一批類所組成的整個類家族建立乙個類模板,給出一套程式**,就可以用來生成多種具體的類,(這類可以看作是類模板的例項),從而大大提高程式設計的效率。類模板的例項化就是模板類。
定義類模板的一般形式是:
template 《型別名 引數名1,型別名 引數名2,…>
class 類名
;
類模板的選擇性例項化:當我們用某乙個型別例項化類模板得到的乙個模板類時,模板類的成員方法根據我們的使用而選擇性例項化。
例項:我們直接來用模板寫乙個順序棧,它可以儲存任何型別資料。
#include
using namespace std;
template
class seqstack//模板名稱+型別引數列表 = 類名稱
~seqstack()
//析構
seqstack
(const seqstack
&stack)
//拷貝構造
} seqstack
& operator=
(const seqstack
&stack)
//賦值運算子過載
delete[
]_pstack;
_top = stack._top;
_size = stack._size;
_pstack = new t[_size]
;for
(int i=
0; i<_top;
++i)
return
*this;
}void
push
(const t &val)
//入棧
_pstack[_top++
]= val;
}void
pop(
)//出棧
t top()
const
//返回棧頂元素
return _pstack[_top-1]
;}bool full()
const
//判滿
bool empty()
const
//判空
private:
t *_pstack;
int _top;
int _size;
void
expand()
//擴容
delete[
]_pstack;
_pstack = ptmp;
_size *=2
;}};
/*也可以在類外實現
templatevoid seqstack::push(const t &val)//入棧
_pstack[_top++] = val;
}*/int
main()
; seqstack<
int> s1;
s1.push(20
);s1.
push(78
);s1.
push(32
);s1.
push(15
);s1.
pop();
cout << s1.
top(
)<< endl;
return0;
}
C 類模板與模板類
6.3 類模板和模板類 所謂類模板,實際上是建立乙個通用類,其資料成員 成員函式的返回值型別和形參型別不具體指定,用乙個虛擬的型別來代表。使用類模板定義物件時,系統會實參的型別來取代類模板中虛擬型別從而實現了不同類的功能。定義乙個類模板與定義函式模板的格式類似,必須以關鍵字template開始,後面...
類模板與模板類
1.類模板與模板類的概念 什麼是類模板乙個類模板 也稱為類屬類或類生成類 允許使用者為類定義一種模式,使得類中的某些資料成員 默寫成員函式的引數 某些成員函式的返回值,能夠取任意型別 包括系統預定義的和使用者自定義的 如果乙個類中資料成員的資料型別不能確定,或者是某個成員函式的引數或返回值的型別不能...
類模板與模板類
類模板 就是設計類的一種框架,可以適用於不同的資料型別,是類的抽象。利用類模板可以針對不同的資料型別定義出具有共性的一組類。定義 template 型別形參列表 class 類模板名 其中型別引數列表與函式模板形式相同,如 定義類模板時應注意以下幾點 要是用關鍵字template 型別形參列表可以包...