C++模版编程 2
·
普通函数与函数模版的区别
- 普通函数调用时可以发生自动类型转换(隐式类型转换)
- 函数模版调用时,如果利用自动类型推导,不会发生隐式类转换
- 如果利用显示指定类型的方法,可以发生隐式类型转换
普通函数与函数模版的调用规则
调用规则如下:
- 如果函数模版和普通函数都可以实现,优先调用普通函数
- 可以通过空模版参数列表来强制调用函数模版
- 函数模版也可以发生重载
- 如果函数模版可以产生更好的匹配,优先调用函数模版
#include <iostream>
using namespace std;
//通过空模版的参数列表可以强制调用模版函数
template <typename T>
void myPrint(T a,T b)
{
cout<<"调用的模版"<<endl;
}
void myPrint(int a,int b)
{
cout<<"调用的普通函数"<<endl;
}
void test01()
{
int a=10;
int b=20;
//myPrint(a,b); //调用的普通函数
// 强制调用模版函数
// 通过空模版的参数列表
// 这种方式可以避免编译器根据参数类型推导出普通函数
// 而直接调用模版函数
// 这种方式在函数重载时很有用
myPrint<int>(a,b); //调用的模版
}
int main(){
test01();
}

#include <iostream>
using namespace std;
//通过空模版的参数列表可以强制调用模版函数
template <typename T>
void myPrint(T a,T b)
{
cout<<"调用的模版"<<endl;
}
template <typename T>
void myPrint(T a,T b,T c)
{
cout<<"调用的重载模版"<<endl;
}
void myPrint(int a,int b)
{
cout<<"调用的普通函数"<<endl;
}
void test01()
{
int a=10;
int b=20;
//myPrint(a,b); //调用的普通函数
// 强制调用模版函数
// 通过空模版的参数列表
// 这种方式可以避免编译器根据参数类型推导出普通函数
// 而直接调用模版函数
// 这种方式在函数重载时很有用
myPrint<int>(a,b); //调用的模版
myPrint(a,b,30); //调用的重载模版
}
int main(){
test01();
}
如果函数模版可以产生更好的匹配,优先调用函数模版
char c1='a';
char c2='b';
myPrint(c1,c2);
更多推荐
所有评论(0)