模板类总结

前言

C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。

模板机制

  1. 模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属。
  2. 模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。

模板语法

函数模板定义形式 
template    < 类型形式参数表 >    
类型形式参数的形式为:
typename T1,typename T2 ,..., typename Tn 
或class T1 , class T2 ,..., class Tn  

函数重载(模板函数,普通函数)

二者区别

  1. 函数模板能够进行自动类型转换
  2. 普通函数不允许自动类型转换

调用规则

  1. 函数模板可以像普通函数一样被重载
  2. C++编译器优先考虑普通函数
  3. 如果函数模板可以产生一个更好的匹配,那么选择模板
  4. 可以通过空模板实参列表的语法限定编译器只通过模板匹配

函数模板机制

  1. 编译器并不是把函数模板处理成能够处理任意类的函数
  2. 编译器从函数模板通过具体类型产生不同的函数
  3. 编译器会对函数模板进行两次编译:在声明的地方对模板代码本身进行编译;在调用的地方对参数替换后的代码进行编译。

猜你喜欢

转载自blog.csdn.net/qq_45279570/article/details/112647035