C++模板与泛型编程(1.函数模板与类模板)

所谓泛型编程就是以独立于任何特定类型的方式编写代码,模板是泛型编程的基础。

1.函数模板

我们经常会遇到需要编写函数比较两个对象大小的情况,比如需要比较两个int值得大小、两个char值的大小等等,在C++以前,我们需要为每一种对象编写对应的函数,甚至必须取不同的函数名,有了C++以后,还没接触到泛型编程前我们可能会利用函数重载来避免要取多个不同名字的麻烦,但还是需要编写多个函数:

int compare(const int &a, const int &b)
{
    if(a < b) return -1;
    if(b < a) return 1;
    return 0;
}

int compare(const string &a, const string &b)
{
    if(a < b) return -1;
    if(b < a) return 1;
    return 0;
}

这些函数执行的操作都是一模一样的,重复编写相同的内容相当低效,有了泛型编程的思想后,我们可以定义一个函数模板,编译器会自己根据给定的模板实参生成不同的函数(实例):

template  int compare(const T &a, const T &b)
{
    if(a < b) return -1;
    if(b < a) return 1;
    return 0;
}

函数模板定义从template关键字开始,后面括号里是模板形参表(template parameter list),模板形参T可以是表示类型的类型形参(type parameter)

你可能感兴趣的:(c++,C++,模板,泛型编程)