gpt4 book ai didi

c++ - 重载分辨率

转载 作者:可可西里 更新时间:2023-11-01 17:37:06 25 4
gpt4 key购买 nike

据我所知,在两个候选函数之间进行选择时,编译器会更喜欢匹配最弱的函数。例如,如果我有:

void boo(int i, char c);  
void boo(double d, int i);

对于以下代码:

float f = 1.0;  
char c = 'c';
boo(f,c);

第二个 boo 应该是首选,因为它最弱的匹配是提升,而第一个是标准类型转换。

但是当我尝试编译它(使用 gcc)时,我得到:

error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second.

有什么想法吗?

最佳答案

你对重载决议的理解是错误的。一般规则(当有多个参数时)是选择一个至少有一个参数更好的函数(它没有不管好多少),其他的都没有更糟。在换句话说,编译器分别处理每个参数,为它创建一组“最佳匹配”。在此之后,需要这些集合的并集:如果交集恰好包含一个函数,你赢了。否则,它是不明确的。

关于c++ - 重载分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18152207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com