類模板的成員函式與普通函式模板的區別

2021-06-05 22:23:39 字數 690 閱讀 2928

類模板的成員函式本身也是函式模板。像任何其他函式模板一樣,需要使用類模板的成員函式產生該成員的例項化。與其他函式模板不同的是,在例項化類

板形參由呼叫該函式的物件的型別確定。例如,當呼叫 queue型別物件的 push 成員時,例項化的 push 函式為 

void queue::push(const int &val) 

物件的模板實參能夠確定成員函式模板形參,這一事實意味著,呼叫類模板成員函式比呼叫類似函式模板更靈活。

用模板形參定義的函式形參的實參允許進行常規轉換:

queueqi; // instantiates class queue

short s = 42; 

int i = 42; 

// ok: s converted to int and passed to push 

qi.push(s); // instantiates queue::push(const int&) 

qi.push(i); // uses queue::push(const int&) 

f(s);       // instantiates f(const short&)

普通的函式模板不可以進行常規轉換,

但可以在傳參的時候手動轉換,或者顯示地指示函式模板的形參型別。

模板 函式模板與類模板

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

函式模板與類模板

c 提供的函式模板可以定義乙個對任何型別變數進行操作的函式,從而大大增強了函式設計的通用性。使用函式模板的方法是先說明函式模板,然後例項化成相應的模板函式進行呼叫執行。函式模板的一般說明形式如下 template 模板形參表 返回值型別 函式名 模板函式形參表 其中,模板形參表 可以包含基本資料型別...

函式模板與類模板

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