c++,泛型编程:显式指定模板形参,<>在函数调用时的作用
需要显式指定在调用函数模板时的参数类型的情况:
1、当模板参数和调用函数没有发生关联时。
2、不能由调用参数决定决定模板参数时。
以及:
3、多个类型放在函数模板中都可以,导致调用的可调用对象(大多数情况下是函数)不确定时。
4、防止别人看不懂函数时。
5、防止自己以后看不懂函数时。
显式指定函数模板形参的语法:
template <typename T>
T max(T const &a, T const &b)
{
return a < b ? b : a;
}
int ia = 10;
int ib = 100;
cout<<max<int,int>(a,b)<<endl;
1、这里的语法中可以看到,在调用函数模板时,在函数名后,参数列表前的<>区域,就是程序员显式指定函数模板类型参数的区域。
2、一般看到函数名后面,参数列表前面有<>时,我们就可以断定这个函数名是一个函数模板,类名后有<>也可以判断其是类模板。
3、同样的,显式指定函数模板的类型参数时如果出现了一个参数连续检测出多个含义,就会编译报错。
使用显式指定函数模板形参的好处:
1、显示指定函数模板形参有相当重要的必要性和优点,平时的工程开发中应该给所有的泛型编程调用都应该显式指定类型形参。
2、代码清晰,即有在程序员走读过程中感觉到代码调用的清晰,又有编译器在参数选择和推断时的数据类型的清晰选择。