C++中用函数模板实现和优化抽象操作

C++中用函数模板实现和优化抽象操作,第1张

C++中用函数模板实现和优化抽象操作,第2张

本文介绍了函数模板的概念和用途,以及如何创建和使用函数模板。......

当创建执行抽象操作(如复制、反转和排序)的函数时,必须定义多个版本,以便可以处理每种数据类型。以max()函数为例。它返回两个参数中较大的一个:

双max(双第一,双第二);
复数max(复数第一,复数第二);
date max(日期第一,日期第二);

//..此功能的其他版本

尽管对于不同的数据类型,该函数的实现是相同的,但是程序员必须为每种数据类型定义一个单独的版本:

double max(双第一,双第二)
{
return first > second?第一:第二;
}

复数max(复数第一,复数第二)
{
return first > second?第一:第二;
}

date max(date first,date second)
{
return first > second?第一:第二;
}

这不仅重复劳动,容易出错,也带来了大量的维护和调试工作量。更糟糕的是,即使你在程序中不使用某个版本,它的代码仍然会增加可执行文件的大小,而且大多数编译器不会从可执行文件中删除不被引用的函数。

用普通函数实现抽象操作,会迫使你定义多个函数实例,会产生大量的维护和调试费用。解决方法是使用函数模板,而不是普通函数。

使用功能模板

函数模板解决了以上所有问题。独立于类型,仅在需要时自动实例化。本文将展示如何定义一个函数模板来抽象一般操作,演示其用法并讨论优化技术。

第一步:定义

函数的声明是关键字template后面括号中的一个或多个模板的参数和原型。与普通函数相比,它通常在一个转换单元中声明,在另一个单元中定义。您可以在头文件中定义模板。例如:

//file MAX . h
# ifndef MAX _ INCLUDED
# define MAX _ INCLUDED
template < class T > T MAX(T t1,T t2)
{
return (t1 > t2)?t1:T2;
}
#endif

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++中用函数模板实现和优化抽象操作

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情