Effective C++ 条款26: 当心潜在的二义性
来源:互联网 发布:js网页访问量统计代码 编辑:程序博客网 时间:2024/05/22 06:38
#include <iostream>using namespace std;void f(char c){cout << c <<endl;}void f(int i){cout << i <<endl;}int main(){double d = 2.0;f(d);return 0;}
上述代码中f(d)调用会产生二义性。
重载解析的步骤:
1、确定函数调用考虑的重载函数的集合,确定函数调用中的实参属性。
2、从重载函数集合中选择的函数,该函数可以在(给出实参个数和类型)的情况下用调用中指定的实参进行调用。
3、选择与调用最匹配的函数。
在我们 给的实参和重载函数类型不是精确匹配时,而是要通过一定的数据类型转换来得到则要准寻下列原则:
1、应用在实参上的转换不比调用其他可行函数所需的转换差。
2、在某些实参上的转换要比其他可行函数对该函数的对该参数的转换好。
ps:精确匹配比标准抓换好(不转换比任何转换好)。c++ primer 383 有详细说明。
因为上面例子中我们在执行f(d);的时候,有两个候选函数。而且在通过数据类型转换从而得到匹配函数时,出现二义性。
- effective c++ 条款26: 当心潜在的二义性
- Effective C++ 条款26: 当心潜在的二义性
- effective C++笔记之条款26:当心潜在的二义性
- 当心潜在的二义性
- 当心潜在的二义性,一个例子
- 《Effective C++》资源管理:条款26-条款27
- Effective STL 条款6 : 当心C++另人迷惑的解析
- Effective STL 条款6 : 当心C++另人迷惑的解析
- Effective C++(条款26-31)
- Effective C++:条款01
- Effective C++:条款02
- Effective C++:条款03
- Effective C++:条款04
- Effective C++:条款05
- Effective C++:条款06
- Effective C++:条款07
- Effective C++:条款08
- 《effective C++》条款三
- 读书笔记(第七讲)
- 了解VS2008 和.NET Framework3.5最主要的十件事
- align属性
- 2011.9.15日报
- CG快报 2011.9.14
- Effective C++ 条款26: 当心潜在的二义性
- 在线编辑器的实现,与存储过程再续(select into ,游标,错误处理)
- Unity 3D 做FPS游戏
- Oracle 10g Scheduler 特性
- URAL 1489. Points on a Parallelepiped
- 转: 新浪微博布局学习——妙用TabHost
- Session机制详解
- 里程计、推算定位与视觉里程计
- Object-C学习笔记九-----查找文件