| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++模版:深入使用函数模版 -> 正文阅读 |
|
[C++知识库]C++模版:深入使用函数模版 |
上文函数模版初探介绍了函数模版的基本使用,本文深入探讨函数模版。 函数模版参数的类型转换函数模版有多个同类型的形参,使用过程中会碰到类型转换问题。 下面是一个加法函数模版:
使用隐式实例化,2个实参的类型必须相同,否则编译出错 使用显示实例化,2个实参的类型可以不同,但是会发生隐式类型转换。
函数模版重载函数模版跟普通函数一样支持重载。函数参数列表中,参数不一定是泛型,也可以是具体的类型。 比如,加法函数模版中,增加3个数相加的函数模版。第3个参数,可以是泛型,也可以是具体的
函数模版的局限性及解决方案函数模版很可能无法处理某些类型。 比如下面的例子,如果
一种解决方案是,为特定类型提供具体化的函数定义,这称之为显示具体化( 显示具体化的原型和定义:
编译器会选择最合适的显示具体化函数。
编译器选择哪个函数调用函数时,如果有多个函数或者模版符合要求:
编译器必须选择一个最佳的函数。以下匹配规则,优先级从高到低:
下面是5个函数或者模版,编号是1到5。使用不同编号的函数和测试用例,验证匹配规则。
测试用例1:
下面情况都是完全匹配,输出结果如下:
下面情况是完全匹配优先级高于提升转换或者标准转换,输出结果如下:
测试用例2:
下面情况是提升转换优先级高于标准转换,输出结果如下:
总结
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 4:04:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |