• 限定名称查找规则实际归纳下来很简单,先对::左边的名称进行查找(遵循,限定,无限定),然后在左边查找到的(此时只查找类型名称)名字的作用域内(含内联名称空间件)查找右边出现的名字,查找到即存在(故可以避免二义访问,名称隐藏,以及多态,还有注入类类名查找),否则出错,并且,对于一个出现在声明器上的无限定名称查找,会对当前声明器的所有名字都进行限定查找,例:
const int DD = 100;
class N{
static int S[DD];
static const int DD = 50;
};
int N::S[DD]{};//错误,此时的DD是N::DD,而不是声明的::DD;
  • ,但是对于以下,存在特殊情况:

    • ::后是~的后接标识符,那么此时将在左边的名称空间内查找析构函数(或伪析构)
    • 当::后的名字和左边的相同,那么为构造函数,此时若处于using 之后,则意为无视访问限定可查找到基类所有构造函数,当且仅当,前面存在详细类型指定符时,为类型,即为注入类名
    • ::后若为operator的转换类型,则其后的类型ID优先在前面的范围内查找,查找不到则在当前作用域按无限定名称查找,但是,此时两个作用域内的转换目标必须一致,例:
    class D{
    public:
    operator double(){
    return 1;
    }
    };
    class C{
    using DS = double;
    //using DS = int; 错误
    public:
    friend D::operator DS();
    };
    • ::后为模板(类,函数等),模板实参查找在当前作用域内按无限定名称查找方式进行
  • 对于一个声明,若是按照不同的空间方式查找得到,但是查找到的都是同一声明,那么无异议.

C++ 限定名称查找的更多相关文章

  1. C++ 无限定名称查找

    无限定名称查找 (关键字:懒惰,挑捡,using指令的特殊性) 无限定名称查找实际上就是指没有限定(名称空间和名称空间运算符)名存在的一个名字的出现,其中对于using指令,其内部包含的所有的声明是被 ...

  2. [转] WinForm自定义函数FindControl实现按名称查找控件

    原文地址 WinForm自定义函数FindControl实现按名称查找控件 本文所述实例实现WinForm自定义函数FindControl实现按名称查找控件的功能,在C#程序开发中有一定的实用价值. ...

  3. linux文件名称查找which,whereis,locate

    1. 文件名称查找 使用find查询时.因为磁盘查询.所以速度较慢. 所以linux下查询更常使用which, whereis, locate来查询,因为是利用数据库查询.所以速度非常快. 2. wh ...

  4. 枚举 switch case 标签必须为枚举常量的非限定名称

    枚举 switch case 标签必须为枚举常量的非限定名称 错误描述: Error:(63, 24) 错误: 枚举 switch case 标签必须为枚举常量的非限定名称. 解决思路: switch ...

  5. c++11-17 模板核心知识(十三)—— 名称查找与ADL

    名称分类 名称查找 ordinary lookup ADL (Argument-Dependent Lookup) 官网的例子 ADL的缺点 在C++中,如果编译器遇到一个名称,它会寻找这个名称代表什 ...

  6. WPF 通过名称查找属性(DependencyProperty)

    使用名称来查找DependencyProperty. 如果有这样的需求,则是需要通过DependencyPropertyDescriptor来查找. 通常是使用附加属性或者依赖属性的方法. 下面给出附 ...

  7. WPF 按名称查找控件

    1FrameworkElement类FindName方法 使用过程 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.容器控件.FindN ...

  8. Qt 按名称查找子节点

    TreeItem* TreeModel::GetItem(QStringList& list, TreeItem* parent ,int deep) { ).toString()) { if ...

  9. Oracle根据约束条件名称查找对应的数据

    select * from dba_constraints where constraint_name = 'SYS_C0082752'

随机推荐

  1. array类型的方法

    var arr1 = [12,454,'dafda','feagfag',23]; var arr2 = [46468,'ffwfe','dafs','dfsfs']; arr1.indexOf('d ...

  2. 练习十一:兔子数量计算—斐波那契实例

    题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少? 通过数学分析我们知道,兔子的规律为数列1,1,2 ...

  3. selenium框架安装及webdriver安装

    本文介绍的是selenium安装及webdriver安装.小实例 1.selenium介绍 selenium是一个用于web应用程序测试的工具. Selenium测试直接运行在浏览器,就向真正的用户操 ...

  4. JS——两个原生选择器

    1. document.querySlector() 2.document.querySlectorAll() <!DOCTYPE html> <html lang="en ...

  5. Apache禁止访问网站子目录的方法

    在PHP网站开发中,基于WEB服务器和PHP网站程序代码的安全考虑,我们需要对相关的目录或者文件访问权限进行控制,以防止意外情况的发生,那么我们如何来实现这种功能呢?我们可以通过Apache来实现禁止 ...

  6. dojo topic 发布与订阅 小例子可以参考下

    <!DOCTYPE html><html> <head> <title></title></head> <body> ...

  7. C#对INI文件读写

    C#本身没有对INI格式文件的操作类,可以自定义一个IniFile类进行INI文件读写. using System; using System.Collections.Generic; using S ...

  8. Spring相关理解

    日常拖完整患者............... 待续...

  9. Magento 中一个订单的“生命历程”

    当我们在网上愉快的买买买的时候, 你知道在这些屏幕“背后”正在进行着什么吗? 1. 当一个产品被加入到购物车后, 实际上发生了什么? 当第一个产品被加入到购物车, 系统首先会生成一个 quote (q ...

  10. 腾讯云服务器手动和自动安装WordPress网站程序

    如果我们需要建站的话,对于基础个人网站.博客建站选择基础的1Mbps带宽配置的1GB内存的腾讯云服务器还是够用的,且如果我们需要用来建网站的话可以手工添加程序,以及有些面板,比如宝塔面板是自带CMS程 ...