C++函数模板的显示调用与隐式调用
2017-10-22 15:50
190 查看
C++函数模板可以显示调用与可以隐式调用
首先定义函数模板:template <class T> inline const T& c_max (const T& a, const T& b) { return a < b ? b : a; }
那么隐式调用也就是隐式的参数类型推导,根据参数类型决定函数模板的编译,如:
// implicitly c_max(1, 2);
使用最多的,也是隐式调用,上面代码将使用参数类型为
int的编译模板。
那么什么是显示调用呢?如下:
// explicitly c_max<double>(1, 2);
上面的调用会将参数先强制转换为
double类型,然后调用编译类型为
double模板函数。
那么这么做有什么用呢?当使用两个不同类型的参数调用时,会有什么结果呢?
c_max(1, 2.1);
编译时会出现类似下面的错误:
error: no matching function for call to ‘c_max(int, double)’
这个时候就需要使用显示的调用,如:
c_max<double>(1, 2.1);
测试代码:https://github.com/Furzoom/demo-C/tree/master/src/cpp
(完)
相关文章推荐
- C++函数模板的显示调用与隐式调用
- C/C++中的显示调用和隐式调用
- 显示调用和隐式调用
- Activity的隐式调用和显示调用
- MFC静态链接库调用的显示和隐式调用讲解
- C#接口的隐式和显示调用,区别和实例
- C#接口的隐式和显示调用,区别和实例
- C++模板之隐式实例化、显示实例化、隐式调用、显示调用和模板特化详解
- 用隐式请求调用系统相机,并且把拍照的相片显示在当前界面
- C++模板之隐式实例化、显示实例化、隐式调用、显示调用和模板特化详解
- DLL静态(显示)调用,动态(隐式)调用
- java 显示调用和隐式调用 示例
- 调用activity的几种方式(显示、隐式)
- Java 显示调用和隐式调用
- C++ 运算符重载显示调用与隐式调用的转换关系
- C++对dll链接库的显示(动态)调用和隐式(静态)调用
- Activity显示/隐式调用
- java 隐式调用和显示调用
- Android-Activity之间显示和隐式跳转-Date 数据跳转-调用系统的的组件
- Activity隐式显示调用