如果函数外部与函数内部有同名函数,在函数内部调用这个函数,外部函数会被隐藏,调用的是内部的同名函数
函数调用时,编译器会先找局部的哪个函数,一旦找到了对应名字的函数,编译器会忽略外部的同名函数
在C++中名字查找发生在类型检查之前
string read();
void print(const string&);
void print(double);
void fooBar(int ival) {
bool read = false;//这个read在fooBar作用域内
string s = read();//错误:此时调用的read()是函数内部的read是布尔值
void print(int);//这个print是在fooBar作用域内
print("Value:");//错误:这个调用在函数内部,外部的print(const string&)被隐藏
print(ival);//正确调用的是print(int)
print(3.14);//正确调用的是print(int),不会调用外部的print(double),传入的3.14会被隐式转换为int类型
}