【发布时间】:2020-09-04 08:21:21
【问题描述】:
我正在阅读有关函数重载的内容并发现以下内容:
编译器会列出所有同名且同名的函数 参数数量,然后它开始使用 以下规则按固定顺序排列并在匹配时停止。
1) 与调用具有完全相同的参数类型的函数 给它。
2) bool-> int char->int float-> double... (-> 表示转换为)
3) int-> double, double->int... (-> 表示转换为)
例如:
void foo(int x)
{
return;
}
foo(True);//will trigger step 2.
有人能详细说明数字 2 和 3 吗?并添加完整列表?
【问题讨论】:
-
这个描述来自哪里?首先,这是错误的。这是一个更好的描述:en.cppreference.com/w/cpp/language/overload_resolution
-
我是从其他语言翻译过来的,为什么会出错?
-
“使用以下规则按固定顺序开始查找函数,找到匹配时停止”是错误的。它首先找到一组可行的函数,然后对它们进行排序。如果有一个明确的最好的,那就是调用,否则它是错误的。
标签: c++ overloading