34.c/c++程序员面试宝典-模板
在现代的c++技术中,模板技术是一种比较新的技术,同时也是一种极为有用的技术。在新的标准c++类库中,例如STL和Boost等都采用的是模板技术。
通过使用模板技术,可以使代码得到最大限度的重用。这是基于一种类型参数化的技术实现的。从而对于一些针对不同的类型有相同的操作的算法,能够通过模板技术的使用实现代码的重用。
STL即标准模板库,是c++中的标准库。正如名字所述,该库几乎所有的代码都采用模板技术。STL的主要目的是提供一些通用的代码,包括:容器、迭代器和算法3种。通过使用STL,一些原来需要很多行代码实现的技术在使用了STL后能够大大简化实现,从而提高开发效率。
通常在开发程序的时候,经常会遇到某些功能在代码的实现上都一样,不同的只是处理的对象类型不一样。这种情况下,最好对代码进行重构,将其中的共性提取出来,以实现代码的重用。c++模板技术是实现重用的一种方式。
面试题130 什么是函数模板***
分析:模板技术的使用,包括有函数模板和类模板这两种。通过使用函数模板,能够将函数参数化,使得程序能够使用不同的参数类型调用相同的代码。
函数模板技术定义了参数化的非成员函数,这使得程序能够使用不同的参数类型调用相同的函数,而至于使用何种类型,则是由编译器确定并从模板中生成相应类型的代码。编译器确定了模板函数的实际类型参数,称之为模板的实例化。下面代码是一个模板函数的定义:
template<class T> //定义模板标识
T Add(T a, T b) //函数原型
{
T result=a+b;
return a+b; //将两个参数使用“+”运算符进行运算,这两个参数并不知道是何种类型
}
如上代码所示,定义了一个名为Add的函数模板。该函数与一般函数的不同之处在于并没有明确的指出使用何种数据类型和返回值又是哪种数据类型。数据类型的确定是由使用者在使用时确定。
下面代码演示了如何定义一个函数模板,并且如何在程序中调用该函数。
#include<iostream> //包含标准输入输出头文件
#include <string> //