模板
在我们编写代码时,我们会遇见这种情况: 比如交换函数,当我们要交换的类型是int(传的参数为int型)时,我们要编写的swap函数的形参就应该是int,但当我们要交换的是double型时,我们还要再写一个swap函数来满足要求。每换一种类型就要再重载一个swap函数来满足条件。 虽然通过这方法重载实现所有类型的交换函数,但是这种方法有几个不好的地方,一是重载函数仅仅类型不同,导致代码的复用率很低,只要有新类型出现,就要增加对应的函数;再者代码的可维护性比较低,一个出错可能所有的重载都出错,要一个一个改。 通过上面的例子,我们想能不能告诉编译器一个模子,编译器可以通过不同的类型利用这样的模子自动生成适合各种类型的函数。答案是当然可以 即泛型编程:编写与类型无关的通用代码,而模板是泛型编程的基础。 下面我们来郑重的引入 模板 模板分为函数模板和类模板 函数模板: 什么是函数模板? 函数模板是一个与类型无关,并且对所有类型都适用的函数,在使用时函数可被参数化,根据实参类型结合模板产生函数的特定类型版本实现函数功能。 如何使用? template <typename T1,typename T2...> 返回值 函数名(参数列表){ } typename是用来定义模板参数关键字的,也可以用class 例如: template<typename T> void Swap(T &x, T &y