C++ 函数模板

定义   

函数模板是一种特殊的函数,可以使用不同的类型进行调用,对于功能相同的函数,不需要重复编写代码,并且函数模板与普通函数看起来很类似,区别就是类型可以被参数化

函数模板定义形式

template    < 类型形式参数表 >   

类型形式参数的形式为:

                     typename T1 ,  typename T2 , …… , typename Tn

或     class T1 ,  class T2 , …… , class Tn  

C++ 函数模板

 

    函数模板通过templatetypename两个关键字来定义,如下:

//template 告诉C++编译器 我要开始泛型编程了 .看到T, 不要随便报错

template <typename T>

void myswap(T &a, T &b)

{

    T c = 0;

    c = a;

    a = b;

    b = c;

    cout << "hello ....我是模板函数 欢迎 calll 我" << endl;

}

template关键字用于声明开始泛型编程,typename关键字用于声明泛型类型。

调用

调用函数模板的两种形式:

                   1、显示调用如:myswap<float>(a, b);        

                  2、自动数据类型推导如:myswap(a, b);  

举例:

#include <iostream>

using namespace std;

 

template <typename T>

void myswap(T &a, T &b)

{

    T c = 0;

    c = a;

    a = b;

    b = c;

    cout << "hello ....我是模板函数 欢迎 calll 我" << endl;

}

 

int main()

{

    int x = 10;

    int y = 20;

 

    myswap<int>(x, y); //1 函数模板 显示类型 调用

    myswap(x, y);  //2 自动类型 推导

    printf("x:%d y:%d \n", x, y);

}

运行结果:

 

C++ 函数模板