C 中模板函式的預設引數的簡單分析

2021-08-26 08:40:40 字數 558 閱讀 8444

c++中的template可以用來宣告函式模板和類模板,講到函式模板,就難免想到引數預設值。

以下是幾個例子,用來說明,template中引數預設值的使用。

按照最初的設想,直接在函式宣告處給引數賦預設值。無法通過編譯,會提示無法找到對應的函式宣告。如例1。

發現是無法生成預設值對應的模板函式,給模板函式的型別也賦預設值後,能夠正常生成形如void print(t, ts&)的函式。其中,型別ts的預設值要與引數os的預設值相符合。如例2。

對於類模板中的函式,則不存在類似的問題。因為類模板必須指明模板引數的型別。如例3。

#includeusing namespace std;

template//沒有給ts賦預設值

void print(t input,ts& os=cout)

static void print(t input,ts& os=cout)

執行結果:

hello template

hello template in class

按回車鍵返回

C 11 模板函式的預設模板引數

一 深入理解c 11 裡的兩句話 c 98中,引入了函式模板和類模板,允許模板類宣告的時候有預設模板引數,但是不支援函式模板。c 11 開始支援,區別是模板函式的預設模板引數不需要 從右往左 依次指定。特別,模板引數的預設形參不是模板引數推導的依據。二 include 模板類的預設模板引數的順序從右...

c 函式中的預設引數

函式的預設引數值,即在定義引數的時候同時給它乙個初始值。在呼叫函式的時候,我們可以省略含有預設值的引數。也就是說,如果使用者指定了引數值,則使用使用者指定的值,否則使用預設引數的值。void func int i 1,float f 2.0f,double d 3.0 int main void 引...

C 中函式的預設引數

在c 中增加了函式的預設引數這一功能。在c 中,可以為函式宣告的時候為函式提供乙個預設值,當呼叫該函式的時候,如果沒有函式引數的值,則會使用預設值。例如下面的 include int func int x 0 函式的宣告 int main int argc,char ar int func int ...