国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++】泛型編程 ③ ( 函數(shù)模板 與 普通函數(shù) 調用規(guī)則 | 類型匹配 | 顯式指定函數(shù)模板泛型類型 )

這篇具有很好參考價值的文章主要介紹了【C++】泛型編程 ③ ( 函數(shù)模板 與 普通函數(shù) 調用規(guī)則 | 類型匹配 | 顯式指定函數(shù)模板泛型類型 )。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。






一、普通函數(shù) 與 函數(shù)模板 的調用規(guī)則 - 類型匹配




1、類型匹配


上一篇博客 【C++】泛型編程 ② ( 函數(shù)模板與普通函數(shù)區(qū)別 ) 中 , 分析了 函數(shù)參數(shù) 類型匹配 下的 普通函數(shù) 與 函數(shù)模板 的調用規(guī)則 ;


為 函數(shù)模板 重載了 普通函數(shù) , 普通函數(shù)有指定的類型 ;

// 使用 template 關鍵字 聲明函數(shù)模板 
// 告訴 C++ 編譯器 開始使用 泛型編程 
// 定義的 T 是泛型類型 
// 聲明了多個泛型, 可以只使用其中的部分類型
// 使用函數(shù)模板時 , 顯式類型調用 必須 顯式指定所有 泛型類型 的實際類型
template <typename T>
T add(T a, T b) {
	cout << "調用函數(shù)模板 T add(T a, T b)"<< endl;
	return a + b;
}

// 函數(shù)模板的 重載函數(shù)
// 重載是發(fā)生在 同一個作用域中
// 重寫是發(fā)生在 父類 與 子類 之間
// C++ 編譯器優(yōu)先 調用 符合要求的 普通函數(shù)
// 如果普通函數(shù)不符合要求 , 則考慮調用 函數(shù)模板
int add(int a, int b) {
	cout << "調用普通函數(shù) int add(int a, int b)" << endl;
	return a + b;
}

傳入實參 , 調用 普通函數(shù) 還是 模板函數(shù) , 是有一定的規(guī)則的 ;


普通函數(shù) 與 傳入實參 類型匹配的 情況下 , 優(yōu)先調用 普通函數(shù) ,

如果 普通函數(shù) 無法匹配 則考慮調用 函數(shù)模板 ;


2、代碼示例 - 類型匹配


代碼示例 :

#include "iostream"
using namespace std; 

// 使用 template 關鍵字 聲明函數(shù)模板 
// 告訴 C++ 編譯器 開始使用 泛型編程 
// 定義的 T 是泛型類型 
// 聲明了多個泛型, 可以只使用其中的部分類型
// 使用函數(shù)模板時 , 顯式類型調用 必須 顯式指定所有 泛型類型 的實際類型
template <typename T>
T add(T a, T b) {
	cout << "調用函數(shù)模板 T add(T a, T b)"<< endl;
	return a + b;
}

// 函數(shù)模板的 重載函數(shù)
// 重載是發(fā)生在 同一個作用域中
// 重寫是發(fā)生在 父類 與 子類 之間
// C++ 編譯器優(yōu)先 調用 符合要求的 普通函數(shù)
// 如果普通函數(shù)不符合要求 , 則考慮調用 函數(shù)模板
int add(int a, int b) {
	cout << "調用普通函數(shù) int add(int a, int b)" << endl;
	return a + b;
}

// 普通函數(shù) , 函數(shù)模板 調用 優(yōu)先級
// 函數(shù)模板 會進行 嚴格類型匹配 , 不會進行 類型轉換 ; 
// 
// 如果 符合 普通函數(shù)類型參數(shù)要求 , 優(yōu)先調用普通函數(shù) ; 
// 如果 沒有 符合要求的 普通函數(shù) , 則查看 模板函數(shù) 能否匹配 ; 
// 如果 模板函數(shù) 仍不能匹配 , 則查看 普通函數(shù) 類型轉換能否匹配 ; 

int main() {

	int a = 10, b = 20;
	// 調用普通函數(shù)
	// 如果符合普通函數(shù)要求 優(yōu)先調用普通函數(shù)
	int c = add(a, b);
	cout << "c = " << c << endl;

	double x = 50.0, y = 60.0;
	// 調用函數(shù)模板
	// 函數(shù)模板 自動類型推導
	double z = add(x, y);
	cout << "z = " << z << endl;
	
	// 控制臺暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	system("pause");

	return 0;
}

執(zhí)行結果 :

調用普通函數(shù) int add(int a, int b)
c = 30
調用函數(shù)模板 T add(T a, T b)
z = 110
Press any key to continue . . .

【C++】泛型編程 ③ ( 函數(shù)模板 與 普通函數(shù) 調用規(guī)則 | 類型匹配 | 顯式指定函數(shù)模板泛型類型 ),C++,c++,函數(shù)模板,泛型,泛型編程,普通函數(shù)





二、普通函數(shù) 與 函數(shù)模板 的調用規(guī)則 - 顯式指定函數(shù)模板泛型類型




1、顯式指定函數(shù)模板泛型類型


如果 函數(shù)調用時 , 顯式指定函數(shù)模板類型 , 也就是在尖括號 <> 中指定了泛型類型 ,

此時 即使 參數(shù)類型 能 匹配 普通函數(shù) ,

也要調用 函數(shù)模板 ;


在下面的代碼示例中 , 傳入的實參類型 都是 int 類型 , 完全符合 普通函數(shù)的 調用規(guī)則 ,

但是 使用 <int> 顯示指定了 函數(shù)模板 的 泛型類型 ,

此時必須使用 函數(shù)模板 ;

	int i = 30, j = 40;
	// 調用函數(shù)模板
	// 函數(shù)模板 顯式類型調用
	int k = add<int>(i, j);
	cout << "k = " << k << endl;

2、代碼示例 - 顯式指定函數(shù)模板泛型類型


代碼示例 :

#include "iostream"
using namespace std; 

// 使用 template 關鍵字 聲明函數(shù)模板 
// 告訴 C++ 編譯器 開始使用 泛型編程 
// 定義的 T 是泛型類型 
// 聲明了多個泛型, 可以只使用其中的部分類型
// 使用函數(shù)模板時 , 顯式類型調用 必須 顯式指定所有 泛型類型 的實際類型
template <typename T>
T add(T a, T b) {
	cout << "調用函數(shù)模板 T add(T a, T b)"<< endl;
	return a + b;
}

// 函數(shù)模板的 重載函數(shù)
// 重載是發(fā)生在 同一個作用域中
// 重寫是發(fā)生在 父類 與 子類 之間
// C++ 編譯器優(yōu)先 調用 符合要求的 普通函數(shù)
// 如果普通函數(shù)不符合要求 , 則考慮調用 函數(shù)模板
int add(int a, int b) {
	cout << "調用普通函數(shù) int add(int a, int b)" << endl;
	return a + b;
}

// 普通函數(shù) , 函數(shù)模板 調用 優(yōu)先級
// 函數(shù)模板 會進行 嚴格類型匹配 , 不會進行 類型轉換 ; 
// 
// 如果 符合 普通函數(shù)類型參數(shù)要求 , 優(yōu)先調用普通函數(shù) ; 
// 如果 沒有 符合要求的 普通函數(shù) , 則查看 模板函數(shù) 能否匹配 ; 
// 如果 模板函數(shù) 仍不能匹配 , 則查看 普通函數(shù) 類型轉換能否匹配 ; 

int main() {

	int a = 10, b = 20;
	// 調用普通函數(shù)
	// 如果符合普通函數(shù)要求 優(yōu)先調用普通函數(shù)
	int c = add(a, b);
	cout << "c = " << c << endl;

	// 調用函數(shù)模板
	// 函數(shù)模板 顯式類型調用
	int k = add<int>(a, b);
	cout << "k = " << k << endl;
	
	// 控制臺暫停 , 按任意鍵繼續(xù)向后執(zhí)行
	system("pause");

	return 0;
}

執(zhí)行結果 :

調用普通函數(shù) int add(int a, int b)
c = 30
調用函數(shù)模板 T add(T a, T b)
k = 30
Press any key to continue . . .

【C++】泛型編程 ③ ( 函數(shù)模板 與 普通函數(shù) 調用規(guī)則 | 類型匹配 | 顯式指定函數(shù)模板泛型類型 ),C++,c++,函數(shù)模板,泛型,泛型編程,普通函數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-831613.html

到了這里,關于【C++】泛型編程 ③ ( 函數(shù)模板 與 普通函數(shù) 調用規(guī)則 | 類型匹配 | 顯式指定函數(shù)模板泛型類型 )的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C++ 泛型編程:函數(shù)模板

    C++ 泛型編程:函數(shù)模板

    當需要編寫通用的代碼以處理不同類型的數(shù)據(jù)時,C++ 中的函數(shù)模板是一個很有用的工具。函數(shù)模板允許我們編寫一個通用的函數(shù)定義,可以用于多種不同的數(shù)據(jù)類型,從而提高代碼的重用性和靈活性。 泛型編程 是一種編程范式,旨在實現(xiàn)可重用、通用性高的代碼。它允許我

    2024年02月12日
    瀏覽(19)
  • 【C++初階】八、初識模板(泛型編程、函數(shù)模板、類模板)

    【C++初階】八、初識模板(泛型編程、函數(shù)模板、類模板)

    ========================================================================= 相關代碼gitee自取 : C語言學習日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【C++初階】七、內存管理 (C/C++內存分布、C++內存管理方式、operator new / delete 函數(shù)、定位new表

    2024年02月04日
    瀏覽(19)
  • C++、STL標準模板庫和泛型編程 ——迭代器、 算法、仿函數(shù)(侯捷)

    C++、STL標準模板庫和泛型編程 ——迭代器、 算法、仿函數(shù)(侯捷)

    侯捷 C++八部曲筆記匯總 - - - 持續(xù)更新 ! ! ! 一、C++ 面向對象高級開發(fā) 1、C++面向對象高級編程(上) 2、C++面向對象高級編程(下) 二、STL 標準庫和泛型編程 1、分配器、序列式容器 2、關聯(lián)式容器 3、迭代器、 算法、仿函數(shù) 4、適配器、補充 三、C++ 設計模式 四、C++ 新標準 五、

    2023年04月25日
    瀏覽(34)
  • C++泛型編程之模板

    C++泛型編程之模板

    目錄 一、什么是泛型編程? 二、函數(shù)模板 2.1函數(shù)模板的概念 2.2函數(shù)模板格式 2.3函數(shù)模板的原理 ?2.5函數(shù)模板的實例化 2.6模板參數(shù)的匹配原則 三、類模板 3.1類模板的定義格式 3.2 類模板的實例化 四、非類型模板參數(shù) 五、模板的特化 5.1模板特化的概念: 5.2函數(shù)模板特化 5

    2024年02月07日
    瀏覽(19)
  • 【C++】泛型編程——模板進階

    【C++】泛型編程——模板進階

    在之前的文章里,我們進行了模板初階的學習( 【C++】泛型編程——模板初階),了解了什么是泛型編程,學習了函數(shù)模板和類模板。 那這篇文章,我們繼續(xù)學習模板進階的內容的學習。 首先我們來回顧一下: 我們在模板初階的學習中,定義模板參數(shù)是怎么定義的? 是不

    2024年02月16日
    瀏覽(19)
  • 【C++】C++泛型編程 | 模板初階

    【C++】C++泛型編程 | 模板初階

    ??????? 個人主頁:簡 料 ???? 所屬專欄:C++ ???? 個人社區(qū):越努力越幸運社區(qū) ???? 簡? ? ?? 介: 簡料簡料,簡單有料~在校大學生一枚,專注C/C++/GO的干貨分享,立志成為您的好幫手 ~ C/C++學習路線 (點擊解鎖) ?? C語言 ?? 初階數(shù)據(jù)結構與算法 ?? C++ ??

    2024年02月08日
    瀏覽(29)
  • 【C++基礎(十)】C++泛型編程--模板初階

    【C++基礎(十)】C++泛型編程--模板初階

    ??博主CSDN主頁:杭電碼農-NEO?? ? ?專欄分類:C++從入門到精通? ? ??代碼倉庫:NEO的學習日記?? ? ??關注我??帶你學習C++ ? ???? 在學習數(shù)據(jù)結構時會遇見以下的情況 數(shù)據(jù)結構中存儲的類型往往不能確定 所以在實現(xiàn)數(shù)據(jù)結構時往往是這樣做的 在寫代碼時用DateType來表

    2024年02月13日
    瀏覽(47)
  • C++——模板初階與泛型編程

    C++——模板初階與泛型編程

    ??作者簡介: 花想云 ,在讀本科生一枚,致力于 C/C++、Linux 學習。 ?? 本文收錄于 C++系列 ,本專欄主要內容為 C++ 初階、C++ 進階、STL 詳解等,專為大學生打造全套 C++ 學習教程,持續(xù)更新! ?? 相關專欄推薦: C語言初階系列 、 C語言進階系列 、 數(shù)據(jù)結構與算法 本章我們

    2023年04月17日
    瀏覽(13)
  • 【C++】STL 算法 - transform 變換算法 ② ( 變換規(guī)則為 普通函數(shù) | 變換規(guī)則為 Lambda 表達式 | 變換規(guī)則為 函數(shù)對象 | 變換規(guī)則為 函數(shù)適配器轉換的函數(shù)對象 )

    【C++】STL 算法 - transform 變換算法 ② ( 變換規(guī)則為 普通函數(shù) | 變換規(guī)則為 Lambda 表達式 | 變換規(guī)則為 函數(shù)對象 | 變換規(guī)則為 函數(shù)適配器轉換的函數(shù)對象 )

    transform 算法函數(shù)原型 : 下面的函數(shù)原型作用是 將 一個輸入容器 中的元素 變換后 存儲到 輸出容器 中 ; 參數(shù)解析 : InputIt first1 參數(shù) : 輸入容器 的 起始迭代器 ( 包含 ) ; InputIt last1 參數(shù) : 輸入容器 的 終止迭代器 ( 不包含 ) ; OutputIt d_first 參數(shù) : 輸出容器 的 開始迭代器 , 輸出元

    2024年01月21日
    瀏覽(28)
  • 【c++ primer 筆記】第 16章 模板與泛型編程

    【c++ primer 筆記】第 16章 模板與泛型編程

    ??作者簡介:?? 博主在讀機器人研究生,目前研一。對計算機后端感興趣,喜歡 c + + , g o , p y t h o n , 目前熟悉 c + + , g o 語言,數(shù)據(jù)庫,網(wǎng)絡編程,了解分布式等相關內容 textcolor{orange}{博主在讀機器人研究生,目前研一。對計算機后端感興趣,喜歡c++,go,python,目前熟悉c+

    2024年02月20日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包