【c++】函数模版

原创 2015年07月07日 14:12:17

函数模版用于执行相似的操作,一个简单的实例如下:

template <class T>
T maximun(T value1, T value2, T value3)
{
	T maximuValue = value1;
	if (value2>maximuValue)
		maximuValue = value2;
	if (value3>maximuValue)
		maximuValue = value3;
	return maximuValue;
}

int main()
{
	cout<<maximun(5,6,7)<<endl;
	cout<<maximun(5.1,6.2,7.2)<<endl;
	return 0;
}


无论是整数,浮点数,char字符都可以调用,不过要注意统一。这可以替代简单的重载函数。


注意

1.关键字class和typename是同义词,都可以用。也就说 template <typename T>也可以。

2.T只是一个名字,全部改成别的名字也可以,比如T2.

3.如下代码所示,同时存在一样的名字的template 是正确的,但是不可以公用一个。

template <class T>
T maximun(T value1, T value2, T value3)
{
	T maximuValue = value1;
	if (value2>maximuValue)
		maximuValue = value2;
	if (value3>maximuValue)
		maximuValue = value3;
	return maximuValue;
}

template <class T>
T minimun(T value1, T value2, T value3)
{
	T minimuValue = value1;
	if (value2<minimuValue)
		minimuValue = value2;
	if (value3<minimuValue)
		minimuValue = value3;
	return minimuValue;
}

4.模板使用不当会影响.exe 文件的大小,也就是常见的代码浮肿问题。


如果要支持不同类型的重载,可以使用多个形式类型参数。例如

template <class T,class T2>
T maximun(T value1, T value2, T2 value3)
{
	T maximuValue = value1;
	if (value2>maximuValue)
		maximuValue = value2;
	if (value3>maximuValue)
		maximuValue = value3;
	return maximuValue;
}
注意,不能写成了<class T,T2>.

在调用的时候,显然同一个类型的不会出错。例如maximun(2,3,4).

现在只要value1和value2的类型一致就可以了。例如maximun('A','B',3.4)也会正常运行。













版权声明:本文为博主原创文章,未经博主允许不得转载。

C++函数模板的使用

函数模板: 函数模板是函数的蓝图或处方,编译器使用它生成函数系列的新成员。新函数在第一次使用时创建。从函数模板中生成的函数称为该模板的一个实例或模板的实例化。函数模板的开头是关键字template,表...
  • u010142437
  • u010142437
  • 2014年06月17日 15:40
  • 1452

C++函数模版调用重载函数模版

对于两个不同的重载函数,两个之间可以互相调用,如下代码 void testoveride(std::string s){ std::cout...
  • KingEasternSun
  • KingEasternSun
  • 2013年03月26日 13:53
  • 821

C++ STL之命名空间、函数模板、类模板

1 命名空间 #include //using namespace std; namespace name1 { int max(int a,int b) { int result= ...
  • feng1790291543
  • feng1790291543
  • 2016年12月04日 12:19
  • 619

C++函数模版

模版参数:位于函数模板名称的前面,在一对尖括号内部进行声明:   template <typename T>  //T是模板参数调用参数:位于函数模版名称的后面,在一对圆括号内部进行声明:   模版名...
  • ruixj
  • ruixj
  • 2006年11月21日 11:46
  • 1047

C++在命名空间中使用函数模板

接着上文的例子,使用函数模板,就不用显示定义每个函数。
  • u010142437
  • u010142437
  • 2014年06月19日 16:50
  • 1596

C++学习之构造函数的理解--模板形式的构造函数不会遮掩编译器生成的默认构造函数

我们都知道编译器会为我们定义默认的空参数构造函数和复制构造函数,其实复制构造函数和一般的带参数的构造函数的区别也就仅仅在与此(我认为),也就是在不显示定义复制构造函数的时候,系统会为我们合成一个默认的...
  • xhu_eternalcc
  • xhu_eternalcc
  • 2014年04月02日 23:07
  • 1671

C++ 函数模板 实例化和具体化

函数模板是C++新增的一种性质,它允许只定义一次函数的实现,即可使用不同类型的参数来调用该函数。这样做可以减小代码的书写的复杂度,同时也便于修改。但是,在代码中包含函数模板本身并不会生成函数定义,它只...
  • qq_30835655
  • qq_30835655
  • 2017年08月08日 00:57
  • 378

C++模板之函数模板

泛型编程 编写与类型无关的逻辑代码,是代码复用的一种手段。模板是泛型编程的基础 模板 代表一个函数家族,该函数与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本(它本身不是类或函...
  • ADDw1
  • ADDw1
  • 2017年03月18日 10:39
  • 397

C++函数模板及实现原理

C++为我们提供了函数模板机制。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。 凡是函数体相同的函数都可以用这个模板来代替...
  • baidu_28312631
  • baidu_28312631
  • 2015年08月25日 12:50
  • 6237

C++ 函数模板返回值指定

C++ 函数模板返回值指定
  • roufoo
  • roufoo
  • 2017年11月29日 02:26
  • 87
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【c++】函数模版
举报原因:
原因补充:

(最多只允许输入30个字)