C++中的泛型程序设计—函数模板

8月 14th, 2012
Visited 5705 times, 1 so far today
0

Comments

           模板是C++中功能最为强大的软复用的一种方式,通过函数模板和类模板,我们只需要写一段特定的模板代码,即可以实现不同类型相应功能函数或类的一整套实现。不需要针对不同类型编写多个函数重载(这里就极大的减少了相应代码的编写)。当编译器遇到处理不同的类型时,会调用相应的函数模板来特化自动相应类型的目标代码(也就是说编译器帮我们完成了不同类型的函数重载编写工作).

函数模板的定义:

        所有函数模板的定义都由关键字  template开始,后面跟着<typename T>模板形参列表。模板型参列表中则是具体的模板型参(T)。T就代表了所有基本类型和自定义类型。模板型参T之前一定要加上相应的关键字typename或class来指出相应的模板型参。

例:模板函数测试

#include <iostream>
#include <iomanip>//设置相应的流格式
using namespace std;

template <typename T>
void print(const T * const ptr,int count){//接收二个常量
    for(int i = 0; i < count; i++ )
        cout<<“ptr[“<<i<<“]=”<<ptr[i]<<”  “;;//打印相应的数组元素
    cout<<endl;//换行
}

int main(){
    const int acount = 5;
    const int bcount = 6;
    const int ccount = 6;

    int a[acount] = {1,2,3,4,5};
    double b[bcount] = {1.1,2.2,3.3,4.4,5.5,6.6};
    char c[ccount] = “hello”;//初始化相应的字符数组
    cout<<“first:”<<endl;
    print(a,acount);
    cout<<endl;
    cout<<“second :”<<endl;
    print(b,bcount);
    cout<<endl;
    cout<<“third :”<<endl;
    print(c,ccount);
}