Qt實現簡單函式模板和類模板

2021-10-11 11:26:55 字數 2192 閱讀 9357

函式模板時用於生產函式的,t是型別引數,代表型別,編譯器由模板自動生成函式時,會用具體的型別名對模板中所有的型別引數進行替換,其他部分則原封不動地保留。

widget.h

#ifndef widget_h

#define widget_h

#include

namespace ui

class

widget

:public qwidget

;#endif

// widget_h

widget.cpp

#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)

列印輸出

[

..\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

類模板在stl中應用廣泛,比如list、vector等都是類模板

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 沒區別,括號中的引數叫模板形參,模板形參和函式形參很相像,模板形參不能為空。一...