函式模板與類模板有什麼區別?答:函式模板的例項化是由編譯程式在處理函式呼叫時自動完成的,而類模板的例項化
必 須由程式設計師在程式中顯式地指定。
即函式模板允許隱式呼叫和顯式呼叫而類模板只能顯示呼叫
這期間有涉及到函式模板與模板函式,類模板與模板類的概念
(類似於類與類物件的區 別)
請看下面例子
注意:模板類的函式宣告和實現必須都在標頭檔案中完成,不能像普通類那樣宣告在.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
< t>
:: push( t value)
template
<
class t>
t stack
< t>
:: 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 函式模...
函式模板與類模板
c 提供的函式模板可以定義乙個對任何型別變數進行操作的函式,從而大大增強了函式設計的通用性。使用函式模板的方法是先說明函式模板,然後例項化成相應的模板函式進行呼叫執行。函式模板的一般說明形式如下 template 模板形參表 返回值型別 函式名 模板函式形參表 其中,模板形參表 可以包含基本資料型別...