函式過載與函式模板的區別
《C++程式設計》一書上抄下來的,自己常常混淆,所以記錄一下加深印象。
—————————————————————————————————————————-
函式的過載:
C++允許用同一函式名定義多個函式,這些函式的引數個數和引數型別不同。這就是函式過載。
過載函式的引數個數、引數型別或引數順序3者中必須至少有一種不同,函式返回值型別可以相同也可以不同。
函式模板:
所謂函式模板。實際上是建立一個通用函式,其函式型別和形參型別不具體指定,用一個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定以多個函式,只需在模板中定義一次即可。
template <typename T> //模板宣告。template的含義是“模板”。關鍵字typename或class表示“型別名”。其中T為型別引數,型別引數可以不只一個,可以根據需要確定個數。
T max (T a,T b,T c) //定義一個通用函式,用T作虛擬的型別名
模板只適用於函式體相同、函式的引數個數相同而型別不同的情況,如果引數的個數不同,則不能用函式模板。
—————————————————————————————————————————–
總結:
方法 | 返回值型別 | 引數個數 | 引數型別 | 引數順序 | 函式體 |
過載 | 可同也可不同 | 必須有一種不同 | 不同 | ||
模板 | 相同 | 相同 | 不同 | 相同 | 相同 |
相關文章
- 函式模板過載函式
- C++ 函式過載,函式模板和函式模板過載,選擇哪一個?C++函式
- 類别範本與函式模板的區別函式
- 建構函式與普通函式的區別函式
- 箭頭函式與普通函式的區別函式
- python內建函式-eval()函式與exec()函式的區別Python函式
- 箭頭函式與普通函式區別函式
- fill函式與memset函式的區別(c++)函式C++
- C++ 函式過載和模板C++函式
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- 函式宣告與函式表示式有什麼區別?函式
- JavaScript:鉤子函式與回撥函式的區別JavaScript函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- strcpy函式和memcpy函式的區別函式memcpy
- 普通函式與函式模板呼叫規則函式
- # 普通函式和箭頭函式的區別函式
- JavaScript函式宣告和函式表示式區別JavaScript函式
- 普通函式與函式模板呼叫規則2函式
- StretchBlt函式和BitBlt函式的區別和用法函式
- 函式模板函式
- C++行內函數、函式過載與函式預設引數C++函數函式
- TypeScript 函式過載TypeScript函式
- 簡述箭頭函式和普通函式的區別函式
- 箭頭函式和普通函式的10個區別函式
- python函式與方法的區別總結Python函式
- Python range與enumerate函式區別解析Python函式
- 請別誤用 TypeScript 過載函式型別TypeScript函式型別
- Day 59/100 箭頭函式和普通函式的區別函式
- 面試題:箭頭函式和普通函式的區別面試題函式
- 過載的奧義之函式過載函式
- Python 函式如何過載?Python函式
- 02-函式過載函式
- C++函式過載C++函式
- TransparentBlt、StretchBlt與BitBlt三個函式的區別函式
- C++ 派生類函式過載與虛擬函式繼承詳解C++函式繼承
- JQuery的ready函式與JS的onload的區別jQuery函式JS
- 深入理解箭頭函式和傳統函式的區別函式
- 第 8 節:函式-函式型別與作用域函式型別
- QImage:使用QImage建構函式載入影像和使用成員函式loadFromData載入影像的區別函式