C++ 函数模板重载

函数模板可以像普通函数那样重载。

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);
}

然后对应的结果

待续

猜你喜欢

转载自www.cnblogs.com/tuhooo/p/10720766.html