1. 程式人生 > 實用技巧 >C++入門--函式過載

C++入門--函式過載

舉例:實現比較兩個數的大小

#include <iostream>
#include <string>
using namespace std;

#define GETMAX(a, b) ((a) > (b)) ? (a) : (b);
inline int getMax(int a, int b) { return ((a) > (b)) ? (a) : (b); }

int main(int argc, char const* argv[]) {
    int n = getMax(1, 2);
    int n1 = GETMAX(1, 2);
    
char* p = nullptr; char* q = nullptr; char* m = GETMAX(p, q); return 0; }

使用巨集,雖然可以實現忽略傳入的資料型別,但是不安全

使用(內聯)函式,雖然更安全,但是由於有型別檢查而擴充套件性不好

在C++中允許出現同名的函式--函式過載

條件(函式要素:函式名、函式引數、函式返回值、函式的呼叫約定):

1.函式名必須相同

2.函式引數個數不同,型別不同,型別順序不同

3.函式的返回值,呼叫約定不做考慮

4.作用域相同

函式過載的呼叫規則

1.根據函式名找對應的函式,作為候選函式

  1.1如果候選函式個數為0,則報為定義錯誤(找不到識別符號)

2.候選函式個數>0,從候選中找匹配的函式(完全匹配,可以轉換的匹配【char <-->int】【float<-->double】【float<-->int】)

  2.1如果匹配的函式個數 == 0,則錯誤(隱式轉換失敗)

  2.2如果匹配個數>0,找匹配最佳

3.最佳匹配個數 = 1,就呼叫該函式

最佳匹配個數 > 1,就會報二義性