1. 程式人生 > >C++ 函數模板重載

C++ 函數模板重載

png double 模板 sin brush str div val 一起

函數模板可以像普通函數那樣重載。

C++ 編譯器會從不同的候選中匹配一個並進行調用。

即使不涉及到模板,這種匹配的規則也很復雜,現在還有加上模板一起匹配。

先來個小例子:

#include <iostream>
// maximum of two int values                                                                                                                                                                                
int max(int a, int b) {
    using namespace std;
    cout << "non template for two ints" << endl;
    return b < a ? a : b;
}

// maximum of two values of any type                                                                                                                                                                        
template<typename T>
T max(T a, T b) {
    using namespace std;
    cout << "template" << endl;
    return b < a ? a : b;
}

int main() {
    ::max(7, 42);
    ::max(7.0, 42.0);
    ::max(‘a‘, ‘b‘);
    ::max<>(7, 42);
    ::max<double>(7, 42);
    ::max(‘a‘, 42.7);
}

然後對應的結果

技術分享圖片

待續

C++ 函數模板重載