c++模版 template

原创 2013年12月03日 09:51:32

              c++中定义重载函数可以使代码重用,而模版template也是实现代码重用机制的一种工具。它可以把参数类型化,也可以说是抽象化,而到真正调用的时候,系统会识别参数真正的类型,从而自动实例化参数,进行调用。

              举个例子,实现两个数交换的函数swap()

              实现两个int型数据交换:

              

swap(int x, int y)
{
	int t;
	t = x;
	x = y;
	y = t;
}

              但是,当两个数据不只是int型的时候,比如是double型或者是char型的时候,这些代码就不适用了。

              但用到模版template的时候,重用性就很高了。

              

template <class T>
swap(T&x, T&y)
{
	T t;
	t = x;
	x = y;
	y = t;
}

              上面的T就是一个抽象的类型,真正调用的时候,系统识别T具体是什么类型,就会调用什么类型,这样的代码重用效率是很高的。

               完整代码:

               

#include<iostream>
using namespace std;
template < class T >
void Two_swap(T& x, T& y)
{
	T t;
	t = x;
	x = y;
	y = t;
}
int main()
{
	int a = 1,b = 2;
	double i = 1.1,j = 2.2;
	char ch1 = 'A',ch2 = 'B';
	Two_swap(a,b);
	Two_swap(i,j);
	Two_swap(ch1,ch2);
	cout<<a<<" "<<b<<endl;
	cout<<i<<" "<<j<<endl;
	cout<<ch1<<" "<<ch2<<endl;
	return 0;
}

 


                        运行结果:

               


      

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

C++ template模板函数的定义与调用

引用《C++primer(第四版)》里的观点:1)标准C++为编译模板代码定义了两种模型:“包含”模型和“分别编译”模型。2)所有编译器都支持“包含”模型,某些编译器支持“分别编译”模型。问题的提出:...
  • imfengyitong
  • imfengyitong
  • 2017年01月28日 17:06
  • 410

C++模板(template)使用介绍

1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需...
  • chenchen410
  • chenchen410
  • 2014年09月23日 18:44
  • 33424

C++中 模板Template的使用

1、在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 答:class用于定义类,在模板引入c++后,最初定义模板的...
  • liyuan_669
  • liyuan_669
  • 2014年08月12日 18:07
  • 2754

C++ 高级篇(一)—— 模板(Templates)

模板(Templates)是ANSI-C++ 标准中新引入的概念。如果你使用的 C++ 编译器不符合这个标准,则你很可能不能使用模板。     函数模板( Function templates) ...
  • zqixiao_09
  • zqixiao_09
  • 2016年05月22日 12:44
  • 14757

[C/C++]_[简单例子看模板template的特性]

场景: 1. 模板在C++里是
  • infoworld
  • infoworld
  • 2014年06月11日 01:01
  • 2531

C++ 编译器处理模板的原理

编译器遇到模板方法定义时,会进行语法检查,但是并不编译模板。编译器无法编译模板定义,因为它不知道使用什么类型。不知道x和y的类型,编译器就无法为x=y这样的语句生成代码。 编译器遇到一个实例化的模板时...
  • u011206291
  • u011206291
  • 2016年10月26日 10:19
  • 1161

C++中 模板Template的使用

//原文地址:http://blog.sina.com.cn/s/blog_74a271040100tkmj.html 1、在c++Template中很多地方都用到了typename与c...
  • qq_15681523
  • qq_15681523
  • 2015年02月14日 17:13
  • 765

《Effective C++》:条款48:认识template元编程

认识template元编程
  • KangRoger
  • KangRoger
  • 2015年03月14日 22:05
  • 1177

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

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

c++重载与模板

一、 模板是泛型编程的重要支持,函数和类模板在STL中运用的非常广泛,首先谈谈c中的函数重载和c++中的函数模板的区别: 1、首先,函数重载是函数名相同,但参数个数和类别不同,如果增加参数个数和参数型...
  • monkey_D_feilong
  • monkey_D_feilong
  • 2016年07月12日 19:48
  • 1000
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++模版 template
举报原因:
原因补充:

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