如果局部地声明一个函数,则该函数是屏蔽外层作用域中的同名函数而不是重载。 这就像一般的作用域规则一样,很好理解。
这样一个规则告知了一个事实,即每一个版本的重载函数都应该在同一个作用域中声明。
让我们看一个很有趣的例子。
void print(const string &);
void print (double)
void func(int a){
void print(int);
print("value");
print (12.34);
print(a);
}
在这里,后面两个都会调用print(int)函数。
名字查找发生在类型检查之前滴!!这就是作用域的成果!