函式模板時用於生產函式的,t是型別引數,代表型別,編譯器由模板自動生成函式時,會用具體的型別名對模板中所有的型別引數進行替換,其他部分則原封不動地保留。
widget.h
widget.cpp#ifndef widget_h
#define widget_h
#include
namespace ui
class
widget
:public qwidget
;#endif
// widget_h
列印輸出#include
"widget.h"
#include
"ui_widget.h"
#include
#include
"classtemplate.h"
widget::
widget
(qwidget *parent)
:qwidget
(parent),ui
(new ui::widget)
widget::
~widget()
//在cpp檔案實現函式模板
template
<
class
t>
void widget::
swap
(t &a, t &b)
類模板在stl中應用廣泛,比如list、vector等都是類模板[
..\templatetest\widget.cpp ]
15 widget::widget 3[.
.\templatetest\widget.cpp ]
16 widget::widget 1[.
.\templatetest\widget.cpp ]
21 widget::widget 3.6[.
.\templatetest\widget.cpp ]
22 widget::widget 2.5
classtemplate.h
呼叫示例#ifndef classtemplate_h
#define classtemplate_h
#include
using
namespace std;
template
<
classt1,
class
t2>
class
classtemplate
bool
operator
<
(const classtemplate
& p)
const;}
;//類模板的成員函式放到類定義外面時的寫法:
template
<
classt1,
class
t2>
bool classtemplate
::operator
<
(const classtemplate
& p)
const
#endif
// classtemplate_h
classtemplateint>
student
("tom",19
);//使用類模板例項化乙個模板類,再使用模板類例項化乙個物件student
qdebug()
<<
"["<<
__file__
<<
"]"<<
__line__
<<__function__<<
" "
<<
"["<<
__file__
<<
"]"<<
__line__
<<__function__<<
" "<
[
..\templatetest\widget.cpp ]
25 widget::widget "tom"[.
.\templatetest\widget.cpp ]
26 widget::widget 19
類模板,模板類和函式模板,模板函式
單整數類 雙整數類 所以c艹跟其他強型別語言為我們提供了乙個所謂模版功能 變數型別 整數 類模板的重點是模板。表示的是乙個模板,專門用於產生類的模子。例子 1 template 2 class vector 3 使用這個vector模板就可以產生很多的class 類 vector vector ve...
函式模板 和類模板
還是例子說話。函式模板 templatemax const t a,const t b 這樣用 int int a 1,b 2 max a,b float float c 1.0f,d 2.0f max c,d double double e 1.0,f 2.0 max e,f 類模板 templa...
函式模板和類模板
1 函式模板 template 形參名,class 形參名,返回型別 函式名 引數列表 其中template和 class 是關鍵字,class 可以用typename 關見字代替,在這裡 typename 和class 沒區別,括號中的引數叫模板形參,模板形參和函式形參很相像,模板形參不能為空。一...