调用规则:

    • 如果函数模板和普通函数都可以实现需要的功能,那么优先调用普通函数。
    • 可以通过空模板参数列表来强制调用函数模板。
    • 函数模板也可以发生重载。
    • 如果函数模板可以产生更好的匹配,那么会优先调用函数模板。

    示例:

    1. #include <iostream>
    2. using namespace std;
    3. int myAdd(int a,int b){
    4. cout << "普通函数的调用" << endl;
    5. return a + b;
    6. }
    7. template<typename T>
    8. T myAdd(T a,T b){
    9. cout << "模板函数的调用" << endl;
    10. return a + b;
    11. }
    12. template<typename T>
    13. T myAdd(T a,T b,T c){
    14. cout << "模板函数的调用"<< endl;
    15. return a + b + c;
    16. }
    17. int main(){
    18. int a = 10;
    19. int b = 20;
    20. int c = 30;
    21. string str1 = "hello,";
    22. string str2 = "world";
    23. cout << myAdd(a,b) << endl;
    24. cout << myAdd<>(a,b) << endl;
    25. cout << myAdd(a,b,c) << endl;
    26. cout << myAdd(str1,str2) << endl;
    27. system("pause");
    28. return 0;
    29. }

    image.png