| 初识模板C++有个概念叫泛型编程,即编写与类型无 ,关的通用代码。模板就是其实现基础。模板分为函数模板和类模板。模板不支持分离编译,也就是声明在.h文件中,定义在.cpp中。 为什么使用模板模板可以具有非类型参数,用于指定大小,可以根据指定的大小创建动态结构模板最重要的一点就是类型无关,提高了代码复用性模板运行时不检查数据类型,也不保证类型安全,相当于类型的宏替换只要支持模板语法,模板的代码就是可移植的
 函数模板template <class T>
T Add(const T& x1, const T& x2)
{
	return x1 + x2;
}
 上面代码在调用时就可以根据传入参数的类型,自动推导出T的类型。这个过程叫做模板的实例化。模板也支持显式实例化,也就是规定好T的类型。如下所示。 int a = 2;
double b = 4.1;
auto ret = Add<int>(a, b);
 其中,函数模板规定T是int类型。b是double类型,赋值给int&时,会发生隐式类型转换。也可以不显式调用,对参数进行强制类型转换,使两个参数是同一类型。 类模板类模板定义格式如下: template <class T>
class 类模板名
{
	
};
 类模板中的函数放在类外进行定义时,需要加模板参数列表: template <class T>
 与函数模板不同的是,类模板只能显示实例化,例如: Vector<int> v1;
 需要注意的是: 类模板是一个类家族,模板类是通过类模板实例化的具体类C++中类模板的声明格式为template<模板形参表声明><类声明>,并且类模板的成员函数都是模板函数
 |