当函数模板遇到普通函数

来源:互联网 发布:java线程池初始化 编辑:程序博客网 时间:2024/05/17 22:00

函数模板和普通函数区别结论:

函数模板不允许自动类型转化

普通函数能够进行自动类型转换

函数模板和普通函数在一起,调用规则:

1 函数模板可以像普通函数一样被重载

2 C++编译器优先考虑普通函数

3 如果函数模板可以产生一个更好的匹配,那么选择模板

4 可以通过空模板实参列表的语法限定编译器只通过模板匹配

#include<iostream>using namespace std;template <typename T>void myswap(T a, T b){cout<<"myswap 模板函数do"<<endl;}void myswap(char a, int b){cout<<"myswap 普通函数do"<<endl;}void main(){char cData = 'a';int  iData = 2;//myswap<int>(cData, iData);  //结论 函数模板不提供隐式的数据类型转换  必须是严格的匹配myswap(cData, iData); myswap(iData, cData);myswap(iData, iData);cout<<"hello..."<<endl;system("pause");return ;}



0 0