函式模板與類模板的區別

2021-06-17 22:32:57 字數 1697 閱讀 3305

函式模板與類模板有什麼區別?答:函式模板的例項化是由編譯程式在處理函式呼叫時自動完成的,而類模板的例項化必須由程式設計師在程式中顯式地指定。

即函式模板允許隱式呼叫和顯式呼叫而類模板只能顯示呼叫

這期間有涉及到函式模板與模板函式,類模板與模板類的概念

(類似於類與類物件的區別)

請看下面例子

注意:模板類的函式宣告和實現必須都在標頭檔案中完成,不能像普通類那樣宣告在.h檔案中實現在.cpp檔案中,原因可以看鏈結

#include

"stdafx.h"

#include

<

iostream

>

using

namespace

std;

//使用模板建立乙個返回最大值的函式

//這是乙個函式模板

template

<

class type>

type maxvalue(type a,type b)

else

return b;

}//建立乙個堆疊模板類

//這是乙個類模板

template

<

class t>

class

stack

~stack()

void push(t value)

;t pop();

bool isempty(

)bool haselement(

)bool isfull(

)private

:int m_npos;

//使用常量表示堆疊的大小

const

static

int statck_size = 100;

t m_data[statck_size];}

;//模板類的成員函式實現

template

<

class t>

void

stack

::push(t value)

template

<

class t>

t stack

::pop(

)void testmaxvalue(

)void teststack(

)//測試模板類(浮點)

stack

<

float

> floatstack;//類模板的例項化由程式設計師顯示的指定

floatstack.push(1.001)

;floatstack.push(2.002)

;floatstack.push(3.003)

;while

(floatstack.haselement())

//測試動態建立物件

//stack建立的指標必須指明型別

stack

<

int>

* pint =

newstack

<

int>()

;類模板的例項化由程式設計師顯示的指定

pint-

>push(10);

pint-

>push(20)

;pint-

>push(30)

;while

(pint-

>haselement())

if( pint !

=null)}

函式模板與類模板的區別

函式模板與類模板有什麼區別?答 函式模板的例項化是由編譯程式在處理函式呼叫時自動完成的,而類模板的例項化必須由程式設計師在程式中顯式地指定。即函式模板允許隱式呼叫和顯式呼叫而類模板只能顯示呼叫 這期間有涉及到函式模板與模板函式,類模板與模板類的概念 類似於類與類物件的區 別 請看下面例子 注意 模板...

函式模板與類模板(模板類)

什麼是泛型程式設計?泛型程式設計 編寫與型別無關的通用 是 復用的一種手段。模板是泛型程式設計的基礎。模板分為函式模板和類模板 下面我們就來說說函式模板 函式模板與型別無關,在使用時被引數化,根據實參型別產生函式的型別版本 格式 template 返回值型別 函式名 引數列表 templatet1 ...

模板 函式模板與類模板

模板 template 是乙個將資料型別引數化的工具。模板分為函式模板和類模板兩種。在定義模板的時候不說明某些函式引數或者資料成員的型別,而將它們的資料型別作為模板引數。在使用模板時根據實參的資料型別確定模板引數即資料型別,從而得到模板的乙個例項。函式模板 function template 函式模...