|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
复制代码
渣渣在线求指导
|
|