马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
I call architecture frozen music.
普通函数与函数模板
普通函数与函数模板的区别:
1、普通函数->可以发生隐式类型转换;
2、函数模板->用自动类型推导,不可以发生隐式类型转换
3、函数模板->用显示指定类型,可以发生隐式类型转换#include<iostream>
using namespace std;
int add1(int a, int b)
{
return a + b;
}
template<class T>
T add2(T a,T b)
{
return a+b;
}
void test1()
{
int a = 11;
int b = 22;
int c = 'c';
cout << add1(a,b) << endl;
cout << add1(a,c) << endl;
//自动类型转换---不会发生隐式类型转换的
cout << add2(a,c) << endl;
//显示指定类型----会发生隐式类型转换
cout << add2<int>(a,c) << endl;
}
int main()
{
test1();
return 0;
}
调用规则:
1、如果函数模板和普通函数都可以实现,优先调用普通函数
2、可以通过空模板参数列表来强制调用函数模板
3、函数模板也可以发生重载
4、如果函数模板可以产生更好的匹配,优先调用函数模板#include<iostream>
using namespace std;
void add1(int a, int b)
{
cout << "普通函数调用!!!!!!!!!" << endl;
}
template<class T>
T add1(T a,T b)
{
cout << "函数模板调用!!!!!!!!!" << endl;
}
template<class T>
T add1(T a,T b,T c)
{
cout << "重载的函数模板调用!!!!!!!!!" << endl;
}
void test1()
{
int a = 11;
int b = 22;
int c = 33;
//如果函数模板和普通函数都可以实现,优先调用普通函数
add1(a,b);
//通过空模板参数列表,强制调用函数模板
add1<>(a,b);
//函数模板也可以发生重载
add1(a,b,c);
//如果函数模板可以产生更好的匹配,优先调用函数模板
char p = 'a';
char q = 'b';
add1(p,q);
}
int main()
{
test1();
return 0;
}
渣渣在线求指导
|