C++按下列三个步骤的先后顺序找到匹配并调用函数:
(1)寻找一个严格匹配,如果找到了,就用那个函数;
(2)通过相容类型的隐式转换寻求一个匹配,如果找到了,就用那个函数;
(3)通过用户定义的转换寻求一个匹配,若能查出有唯一的一组转换,就用那个函数。
例如,重载函数print的匹配:
void print(double);
void print(int);
void func() {
print(1); //匹配int;-----顺序1
print(1.0); //匹配double;-----顺序1
print('a'); //匹配int;-----顺序2
print(3.1415f); //匹配double;-----顺序2
}
C++允许int型容到long型,int型容到double型的隐式转换。但若必须在两者之间抉择时,则会引起错误。
例如
void print(long a);
void print(double a);
void func(int a) {
print(a); //这里的print要匹配哪一个呢?
}
为避免匹配冲突,在调用时,应显示表明是print(long(a))还是print(double(a))。
分享到:
相关推荐
ambiguous overloaded function call(解决方案).md
overloaded function function is ambiguous(解决方案).md
1.error C2733: second C linkage of overloaded function '_interlockedbittestandset' not allowed 2.atlcom 中的 rgs…… 场景: 1.在VS2005 SP1 之上安装 Microsoft SDK 7.0 2.同PC上安装VS2005 SP1与VS2008/...
在加强社区内部的管理中,拥有可以对社区内部进行监控的系统可以节省下来很大一部分人力,并且比人为的巡逻更加可靠、安全。社区视频监控系统主要是利用摄像头和视频采集卡进行视频监控的,本社区视频监控系统主要...
然而,当使用C++的`Json::Value`库(如JsonCpp)时,可能会遇到“Use of overloaded operator [] is ambiguous”这样的编译错误。这个错误通常发生在尝试使用0作为数组下标访问`Json::Value`对象时。 在C++中,`[]`...
在 Scala 中使用 JSON.toJSONString 时,可能会出现ambiguous reference to overloaded definition错误,该错误的原因是由于 JSON.toJSONString 方法的重载导致的。下面对该错误的原因进行分析和解决方案的描述。 ...
在Windows XP Service Pack 3(XP SP3)环境中,"Overloaded-kernel-for-XPSP3.rar" 提供了一个经过重载的内核,这表明它可能包含了对原始XP内核的修改或扩展,以实现特定的目标。这种内核通常由开发人员使用Windows...
《Zabbix动态监控磁盘I/O详解》 在IT运维管理中,监控系统性能是至关重要的环节,其中磁盘I/O(输入/输出)监控尤为关键,因为它是衡量系统响应速度和数据处理能力的重要指标。Zabbix作为一个强大的开源监控解决...
在迁移过程中,可能会遇到类似 `error C2668: 'sqrt': ambiguous call to overloaded function` 的错误提示。这通常是因为在VC6中,`sqrt` 函数可能被定义为接受不同类型的参数(如 `int`, `float`, `long double`)...
VB.NET uses overloaded forms of the same function, and this is an important difference you have to keep in mind as you work with the built-in functions. If you omit an optional argument, you must ...
错误 C2784: 'type ReturnType operator(type1, type2)': no instance of overloaded function matches the argument list - **描述**:没有匹配重载函数的实例。 - **原因**: - 函数重载中没有合适的版本来处理...
overloaded functions;anonymous functions;function structs;reference parameters;object lifetime operations;namespaces;modules;concepts; andcompiler introspection.示例代码:(import cstdio) (def main...
You can declare functions in a way that allows the compiler to expand them inline rather than calling them through the usual function call mechanism. Pros: Inlining a function can generate more ...
TFT-LCD(Thin Film Transistor - Liquid Crystal Display)技术是一种广泛应用在电子设备中的显示技术,包括电视、电脑显示器、手机、平板电脑等。它的核心在于利用薄膜晶体管(TFT)来驱动液晶分子,从而控制光线...
该项目旨在将尽可能多的内核项目集中在一起,在可能的情况下消除冲突,以便实验性内核项目可以更安全地获得更大的曝光度,并可以在更多不同的条件下对这些项目进行测试
Connection matches did not process proxy user expressions (user1[user2]@database) correctly for the application background DBMS_Jobs could not be edited on Oracle19 (‘xxxx’ is not a valid
64位版本的 PLSQL 正式版,只能运行在64位系统中,...Connection matches did not process proxy user expressions (user1[user2]@database) correctly for the application background DBMS_Jobs could not be edited
12、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'。 此错误是由于重载的函数“void reset(int)”在类“B”中找不到。 13、error C2555: 'B::f1': overriding virtual ...
#### 摘要与背景 ...尽管最初的多变量密码体制由马塚本和伊邛建立后,由于线性化方法的存在而遭到了攻击,但后续的研究者如Patarin等人提出了许多MI系统的变体和扩展。 #### 扰动方法概述 ...这种方法的关键是在原有...
错误 1 error C2668: 'sqrt' : ambiguous call to overloaded function d:\wordplay\c++\范例\fractral递归方法画分图形\stdafx.cpp 19 错误 2 fatal error C1903: unable to recover from previous error(s); ...