名字查找 与名字空间
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规则来查找自由函数。
这时我又想到了继承函数函数的隐藏是不是也是也是这样实现的隐藏,好像是的
但覆盖函数的实现为什么会调用基类的函数呢?没想明白,希望达人看到了,帮忙解释下。
但
名字查找 与名字空间相关推荐
- C++学习笔记-----函数调用时的决议:名字查找,重载决议,可访问性检测
第一个程序 class myClass { public:myClass() {}double func(double n) { return n; } private:int func(int n) ...
- C++中一个容易被忽视的名字查找规则
现在,有下面的代码: namespace lx1 { class Point3d { public: Point3d (double dx, double dy, double dz) : m_dX( ...
- c++类名字查找与类的作用域
一.总纲 二.用于类成员声明的名字查找 三.成员定义中的普通块作用域的名字查找 类内作用域使用自己的成员变量,可以使用作用域运算符::或者this两种方法(什么也不加隐式是第二种的缩写). 三.如果编 ...
- 查找域名、由名字查找某个熟知的端口、由名字查找协议
1.由名字查找某个熟知的端口 struct servent{char *s_name; /* official service name */char **s_aliases; /* other al ...
- 根据IP,查找电脑名字
根据IP,查找电脑名字
- C++中一个名字查找的小知识
最近看C++标准中的3.4 name lookup章节,碰巧的是stackoverflow也有人提问,他们对这个问题很疑惑,回答的也并不好. https://stackoverflow.com/que ...
- linux 按名字查找文件夹,详细解读linux系统中使用Find命令查找文件
摘要:文件查找是一个经常用到的功能,在linux系统中查找文件的命令比较多:find.locate.whereis .which等,今天心月就来详细解读find文件查找命令的使用. 文件查找是一个经常 ...
- 虎牙改名字服务器升级维护中,王一博“虎牙直播”被占id,无奈改了名字,新名字却被吐槽...
王一博"虎牙直播"被占id,无奈改了名字,新名字却被吐槽 在12月18号的时候,相信很多粉丝都知道一个特别好的消息,因为在晚上10:00的时候,王一博会空降虎牙直播间,这一次他和自 ...
- 每个python文件就是一个模块、模块的名字就是_每个Python文件都可以作为一个模块,模块的名字就是 的名字_学小易找答案...
[单选题]9.3 The management of XYZ Co has annual credit sales of $20 million and accounts receivable of ...
最新文章
- Redis初学:5(String类型的基本操作)
- Servlet--06--解决乱码问题; 请求转发; 重定向;
- 数据中心管理将成为未来十年所需的技能
- 【题解】p1064 金明的预算方案
- 关于sql中去换行符的问题
- 从PeopleEditor控件中取出多用户并更新到列表
- python去空格的函数_Python怎么去掉最后的空格
- linux给ftp账号分配sftp权限,Linux设置用户通过SFTP访问目录的权限教程
- 小学生计算机课件,小学三年级计算机教学课件
- BZOJ3707 圈地
- 阿里云物联网平台mqtt测试工具
- MPU6050姿态解算——Mahony互补滤波
- macbook配置java环境变量_mac上java环境变量配置
- 用计算机考试的时候怎么用有道词典,(图文教程)有道词典单词书
- mandriva urpm类命令
- 电脑重装系统后如何把网站设为首页
- git之merge和rebase
- react 项目的一个ie8兼容性问题
- NetCore3.1简单使用JWT
- a标签在IE浏览器进行download下载,出现中文乱码 - 戴向天