亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++中函數模板和模板函數的區別?

C++中函數模板和模板函數的區別?

慕仙森 2019-02-05 10:06:38
C++中函數模板和模板函數的區別
查看完整描述

3 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

函數模板提供了一類函數的抽象,它提供了任意類型為參數及返回值。函數模板經實例化后生成的具體函數成為模板函數。函數模板代表了一類函數,模板函數表示某以具體函數。

查看完整回答
1 反對 回復 2019-03-20
?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

2.1 函數模板的定義
不管它們的性質如何,所有的函數模板都具有同樣的基本格式:
template<參數說明>
函數頭
函數體

例如,下面是一個2參數的模板的聲明:
template<class T>
T max(T param1 ,T param2)
{
//此處為函數體
}

2.根據上面已定義的模板,編譯器將可生成下面的模板函數(都是對的,函數模板的目的就是函數重載):
char * max(char * a, char * b) //模板函數1
{
return (a>b)?a:b;
}

int max(int a, int b) //模板函數2
{
return (a>b)?a:b;
}

double max(double a, double b) //模板函數2
{
return (a>b)?a:b;
}
等等。。。。。。。。。。。。。



查看完整回答
反對 回復 2019-03-20
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

模板函數可以進行隱式的數據類型轉換,中函數模板不會進行自動類型轉換。

一、函數模版和同名普通函數在同一個作用域中,會優先調用哪個函數,具體如下:

1.函數模型在進行調用的時候會進行嚴格的類型匹配,而普通函數在調用的時候,會進行函數參數類型轉換(前提是自動類型轉換)。

2.調用函數模版,本質是類型參數化,將要嚴格的按照類型進行匹配,不會進行自動類型轉換

3.調用普通函數,可以進行隱式的數據類型轉換(前提是可以進行自動類型轉換),這是普通函數和模版函數的本質區別。

二、函數模版可以像普通函數被重載

1.C++編譯器優先考慮普通函數:這是因為普通函數已經存在了,而模版函數還需要進一步的判斷,如果函數模版產生一個更好的匹配,那么優先選擇函數模版。

2.可以通過空模版實參列表的語法限制編譯器只調用模版函數(也就是在參數名之后加上<>,隱含了自動類型推斷!),C++編譯器是如何支持模版機制的。



查看完整回答
反對 回復 2019-03-20
  • 3 回答
  • 0 關注
  • 1634 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號