所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。
函数模板和普通函数的区别: 函数模板不允许自动类型转化,普通函数能够进行自动类型转换
函数模板和普通函数在一起调用的规则:
- 1 函数模板可以像普通函数一样被重载
- 2 C++编译器优先考虑普通函数
- 3 如果函数模板可以产生一个更好的匹配,那么选择模板
- 4 可以通过空模板实参列表的语法限定编译器只通过模板匹配
函数模版和类模版有什么区别?
函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。
小结:
- 模板是C++类型参数化的多态工具。C++提供函数模板和类模板。
- 模板定义以模板说明开始。类属参数必须在模板定义中至少出现一次。
- 同一个类属参数可以用于多个模板。
- 类属参数可用于函数的参数类型、返回类型和声明函数中的变量。
- 模板由编译器根据实际数据类型实例化,生成可执行代码。实例化的函数模板称为模板数;实例化的类模板称为模板类。
- 函数模板可以用多种方式重载