【发布时间】:2014-05-10 06:06:47
【问题描述】:
我读过关于非限定名称查找的内容,但我对函数重载有一个误解。在N3797中说:
在 3.4.1 中列出的所有情况下,都会在范围内搜索 按各个类别中列出的顺序声明; 一旦找到名称的声明,名称查找就会结束。
考虑以下代码sn-p:
#include <stdio.h>
void foo(int)
{
printf("foo(int)\n");
}
void foo()
{
printf("foo(void)\n");
}
int main()
{
foo();
}
这个程序显然打印了foo(void)。在这种情况下,名称foo 将在范围内搜索声明。并且让 foo 的第一个成立的定义是
void foo(int)
{
printf("foo(int)\n");
}
为什么程序找到名字后还要继续寻找被调用函数的最佳重载。
【问题讨论】:
标签: c++ function scope overloading