【共读Primer】55.[6.4]函数重载--重载与作用域 Page210

讲解之前,先来看一组代码

string read();
void print(const string &);
void print(double);
void fooBar(int ival)
{
    bool read = false; // 新作用域:隐藏了外层的read
    string s = read;    // 错误: read是一个布尔值,而非函数
    // 为了给大家演示作用域,使用一个局部声明的函数,该写法并不鼓励
    void print(int val){ std::cout << val << std::endl; };  // 新作用域:隐藏了之前的print
    print("Value: ");      // 错误:print(const string &)被隐藏掉了
    print(ival);     // 正确: 当前print(int)可见
    print(3.14);   // 正确:调用print(int); print(double)被隐藏掉了
}

函数的查找分为名称查找和参数匹配(因为重载函数的数量相对较少,所以大部分查找过程并不需要参数匹配)

在C++当中,名字查找在类型检查之前进行。

简单的讲,内层的名称会掩盖外层的名称,而无论该名称是何类型(函数、变量、枚举)

 

posted @ 2018-09-09 15:00  chattyku  阅读(164)  评论(0)    收藏  举报