函式過載與函式模板的區別
《C++程式設計》一書上抄下來的,自己常常混淆,所以記錄一下加深印象。
—————————————————————————————————————————-
函式的過載:
C++允許用同一函式名定義多個函式,這些函式的引數個數和引數型別不同。這就是函式過載。
過載函式的引數個數、引數型別或引數順序3者中必須至少有一種不同,函式返回值型別可以相同也可以不同。
函式模板:
所謂函式模板。實際上是建立一個通用函式,其函式型別和形參型別不具體指定,用一個虛擬的型別來代表。這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定以多個函式,只需在模板中定義一次即可。
template <typename T> //模板宣告。template的含義是“模板”。關鍵字typename或class表示“型別名”。其中T為型別引數,型別引數可以不只一個,可以根據需要確定個數。
T max (T a,T b,T c) //定義一個通用函式,用T作虛擬的型別名
模板只適用於函式體相同、函式的引數個數相同而型別不同的情況,如果引數的個數不同,則不能用函式模板。
—————————————————————————————————————————–
總結:
方法 | 返回值型別 | 引數個數 | 引數型別 | 引數順序 | 函式體 |
過載 | 可同也可不同 | 必須有一種不同 | 不同 | ||
模板 | 相同 | 相同 | 不同 | 相同 | 相同 |
相關文章
- C++ 函式過載,函式模板和函式模板過載,選擇哪一個?C++函式
- 建構函式與普通函式的區別函式
- 箭頭函式與普通函式的區別函式
- append()函式與html()函式的區別APP函式HTML
- 箭頭函式與普通函式區別函式
- C++ 函式過載和模板C++函式
- python內建函式-eval()函式與exec()函式的區別Python函式
- fill函式與memset函式的區別(c++)函式C++
- TypeScript 中函式的理解?與 JavaScript 函式的區別?TypeScript函式JavaScript
- closest()函式parent()函式的區別函式
- JavaScript:鉤子函式與回撥函式的區別JavaScript函式
- 函式宣告和函式表示式的區別函式
- 箭頭函式、簡寫函式、普通函式的區別函式
- prop()函式和attr()函式的區別函式
- JavaScript函式宣告和函式表示式區別JavaScript函式
- jquery position()函式和offset()函式的區別jQuery函式
- # 普通函式和箭頭函式的區別函式
- C++之函式模板與類别範本的區別(三)C++函式
- jquery的$.each()函式和$.map()函式的區別jQuery函式
- C#中解構函式,Close函式,Dispose函式的區別C#函式
- 函式模板函式
- 儲存過程和函式的區別儲存過程函式
- JavaScript建構函式和普通函式的區別JavaScript函式
- C++行內函數、函式過載與函式預設引數C++函數函式
- 正規表示式match()函式和exec()函式的區別函式
- Python物件型別判斷與函式過載Python物件型別函式
- C++的函式和模板函式 (轉)C++函式
- TypeScript 函式過載TypeScript函式
- JavaScript函式過載JavaScript函式
- oracle 建立過程、函式中as, is區別 ?Oracle函式
- 模板函式的特化函式
- 箭頭函式和普通函式的10個區別函式
- 面試題:箭頭函式和普通函式的區別面試題函式
- StretchBlt函式和BitBlt函式的區別和用法函式
- 簡述箭頭函式和普通函式的區別函式
- Smarty 模板函式函式
- 請別誤用 TypeScript 過載函式型別TypeScript函式型別
- C++的函式過載C++函式