namespace A

{

struct X;

struct Y;

void f(int);

void g(X);

}

namespace B

{

void f(int i)

{

f(i);//将调用哪个函数?

}

void g(A::X x)

{

g(x);//将调用哪个函数?

}

void h(A::X x)

{

h(x);//将调用哪个函数?

}

}

说明:Koeing 查找规则:如果在声明函数的参数时使用了一个类(这里参数时X,参数类型为A:X),那么在查找正确的函数名时,编译器将会在包含参数类型的空间中也进行函数名字的匹配

有了这个规则指导:

1:因为在B的名字空间中并没有使用using namespace A ;或者using A;将A空间引入其作用域中,所以只在空间B中查找,函数将无限调用自身B::f();

2:虽然在B的名字空间中并没有使用using namespace A ;或者using A;将A空间引入其作用域中,但参数是空间A中的类对象,因此会在A和B空间中都进行检索,恰好两个空间中都有匹配的函数,这时编译器蒙了,不知道调用谁,对这个函数的调用产生了二义性

3:和2一样,但A空间中没有匹配的函数,因此不会产生二义性;无限调用B::h();

思考:若将namespace B 改成class B会是什么情况呢

答案是2:调用也正常

原因是大昂编译器已经找到一个成员函数时,它将不会试图通过koeing规则来查找自由函数。

这时我又想到了继承函数函数的隐藏是不是也是也是这样实现的隐藏,好像是的

但覆盖函数的实现为什么会调用基类的函数呢?没想明白,希望达人看到了,帮忙解释下。

名字查找 与名字空间相关推荐

  1. C++学习笔记-----函数调用时的决议:名字查找,重载决议,可访问性检测

    第一个程序 class myClass { public:myClass() {}double func(double n) { return n; } private:int func(int n) ...

  2. C++中一个容易被忽视的名字查找规则

    现在,有下面的代码: namespace lx1 { class Point3d { public: Point3d (double dx, double dy, double dz) : m_dX( ...

  3. c++类名字查找与类的作用域

    一.总纲 二.用于类成员声明的名字查找 三.成员定义中的普通块作用域的名字查找 类内作用域使用自己的成员变量,可以使用作用域运算符::或者this两种方法(什么也不加隐式是第二种的缩写). 三.如果编 ...

  4. 查找域名、由名字查找某个熟知的端口、由名字查找协议

    1.由名字查找某个熟知的端口 struct servent{char *s_name; /* official service name */char **s_aliases; /* other al ...

  5. 根据IP,查找电脑名字

    根据IP,查找电脑名字

  6. C++中一个名字查找的小知识

    最近看C++标准中的3.4 name lookup章节,碰巧的是stackoverflow也有人提问,他们对这个问题很疑惑,回答的也并不好. https://stackoverflow.com/que ...

  7. linux 按名字查找文件夹,详细解读linux系统中使用Find命令查找文件

    摘要:文件查找是一个经常用到的功能,在linux系统中查找文件的命令比较多:find.locate.whereis .which等,今天心月就来详细解读find文件查找命令的使用. 文件查找是一个经常 ...

  8. 虎牙改名字服务器升级维护中,王一博“虎牙直播”被占id,无奈改了名字,新名字却被吐槽...

    王一博"虎牙直播"被占id,无奈改了名字,新名字却被吐槽 在12月18号的时候,相信很多粉丝都知道一个特别好的消息,因为在晚上10:00的时候,王一博会空降虎牙直播间,这一次他和自 ...

  9. 每个python文件就是一个模块、模块的名字就是_每个Python文件都可以作为一个模块,模块的名字就是 的名字_学小易找答案...

    [单选题]9.3 The management of XYZ Co has annual credit sales of $20 million and accounts receivable of ...

最新文章

  1. 机器人用上AI后,拥有了堪比人类皮肤的触觉:轻松引线穿针、夹取鸡蛋丨Science子刊...
  2. scala 操作hdfs
  3. 抓住县域消费者的“胃”,淘特凭什么?
  4. C#——判断数列是否排序
  5. 计算机系统和中断的概念
  6. html中常见的小问题(1)
  7. 2005精品书籍-go go go
  8. linux挂载查看、添加与取消
  9. R7-9 模拟EXCEL排序 (25 分)
  10. HR-PD 中文数据无法抽取的问题
  11. oracle 函數索引(1)
  12. jQuery学习_具备吸附功能的拖曳框
  13. 在FireFox中使用IE Tab插件
  14. antdesign——select搜索
  15. HDU5832(大数取模-秦九昭算法)
  16. selenium-登录腾讯防水墙案例
  17. Hive之——Hive2.0函数大全
  18. 苹果在线商店开售官方翻新Retina MacBook Pro
  19. Win10系统无法打开桌面的个性化设置、显示设置及任务栏设置等,处理方法及参考链接如下。
  20. 使用进程池抓取猫眼数据

热门文章

  1. web.xml中url-pattern的配置详解
  2. filesystemwatch java_FileSystemWatch 对文件的监测 修改 创建 删除 并写入日志 – RunningMan1229 – 博客园...
  3. 您可以在Windows上使用FaceTime吗?
  4. mysql触发器 signal_MySQL触发器使用
  5. lol无法启动计算机丢失,无法开启游戏相关问题
  6. Sketch的过去现在和未来
  7. 学生免费下载jetbrain大家族
  8. 34、 内置函数(二)
  9. Flask零基础到项目实战(三)Jinja2模板系统 (二)
  10. 机器学习原来这么有趣!第二章:用机器学习制作超级马里奥的关卡