泛型编程笔记(re迭代)
来源:互联网 发布:淘宝代销阿里怎么刷 编辑:程序博客网 时间:2024/05/16 09:58
《c++ primer》p232
what 函数匹配:将函数调用与候选函数集合中的一个函数相关连的过程
函数匹配的3种可能:
a)找到最佳匹配,编译成功
b)找不到匹配,编译错误
c)when 当存在多个与实参匹配的函数,但没有一个是明显的最佳选择。则编译错误,因为具有二义性
why 要掌握函数匹配的步骤:
1)编译成功,但意想不到的匹配结果 2)编译失败,因为有二义性
when: 当多个函数的形参具有可通过隐式转换关联起来的类型,则函数匹配将相当灵活。在这种情况下,需要程序员充分掌握函数匹配的过程
重载函数的函数匹配的3个步骤:
1)确定候选函数(即,重载函数函数集合):what 候选函数:1)候选函数是与被调函数同名的函数 2)在调用点上,它的声明可见
2)在候选函数集合中,选择可行函数:what 可行函数,即函数调用合法 1)函数形参个数与实参个数相同 2)每个实参类型必须与对应形参类型匹配,或者可被隐式转换为对应的形参类型 3)注意:要将默认函数考虑进去,被调用函数所用的实参可能比实际需要的少
3)在可行函数集合中,寻找最佳匹配(如果有的话):what 最佳匹配:实参类型与形参类型越接近则匹配越佳。所以,精确类型匹配要比需要转换的匹配好。
4)含有多个形参的函数匹配的最佳匹配选择:
编译器依次检查每一个实参来决定哪个或哪些函数匹配最佳。如果<<有且仅有一个>>函数满足下列条件,则匹配成功:
a)其每个实参的匹配都不劣于其他可行函数需要的匹配
b)至少有一个实参的匹配优于其他可行函数提供的匹配
如果在检查了所有实参后,仍找不到唯一最佳匹配函数,则该调用错误,因为具有二义性。
《c++ primer》p234
实参类型转换:
为了确定最佳匹配,编译器将实参类型到相应形参类型的转换划分等级。转换等级以降序排列如下:
1)精确匹配。what 精确匹配:实参与形参类型相同
2)通过类型提升(promotion)实现的匹配
3)通过标准转换(standard conversion)实现的匹配
4)通过类类型转换(class-type conversion)实现的匹配
what 模板实参推断:从函数实参确定模板实参的类型和值的过程,叫做模板实参推断
编译器从函数实参的类型推断模板形参的类型
how: 编写模板定义,以及调用模板函数的注意事项:
1)多个类型形参的实参必须完全匹配
2)类型形参的实参的受限转换
- 泛型编程笔记(re迭代)
- 《TC++PL》读书笔记(re迭代)
- 容器类(1)Vector(re迭代)
- 指针(1)智能指针(re迭代)
- 指针(2)指针常见问题(re迭代)
- 《python核心编程》学习笔记(二):re
- 迭代(python笔记)
- MatLab之父:编程实践学习笔记(一)--迭代
- 迭代服务器编程
- python学习笔记(七)迭代
- 学习笔记-pass迭代
- 迭代计划 培训笔记
- 【笔记】Python迭代对象
- 07---jsp标签编程04(迭代标签)
- python高级编程(三)--迭代、生成器
- "Python"学习笔记(八)(迭代)
- Python入门笔记(5)_ 切片与迭代
- python学习笔记(六)循环、迭代
- SQLiteDatabase中query、insert、update、delete方法参数说明
- java中volatile关键字的含义
- Java 不同版本更新总结
- struts2整合JFreechart 饼图、折线图、柱形图
- HTTP POST GET 本质区别详解
- 泛型编程笔记(re迭代)
- struts2整合jfreechart
- 容器类(1)Vector(re迭代)
- 网站模板收藏
- UVa 10994 Simple Addition (组合数学)
- JSTL 核心标签库 使用
- 容器类(1)Vector(2)
- Recursion 在数组中寻找神奇下标 @CareerCup
- android模拟器Unexpected value from nativeGetEnabledTags: 0 问题解决方法