C++ 限定名称查找
- 限定名称查找规则实际归纳下来很简单,先对::左边的名称进行查找(遵循,限定,无限定),然后在左边查找到的(此时只查找类型名称)名字的作用域内(含内联名称空间件)查找右边出现的名字,查找到即存在(故可以避免二义访问,名称隐藏,以及多态,还有注入类类名查找),否则出错,并且,对于一个出现在声明器上的无限定名称查找,会对当前声明器的所有名字都进行限定查找,例:
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++ 限定名称查找的更多相关文章
- C++ 无限定名称查找
无限定名称查找 (关键字:懒惰,挑捡,using指令的特殊性) 无限定名称查找实际上就是指没有限定(名称空间和名称空间运算符)名存在的一个名字的出现,其中对于using指令,其内部包含的所有的声明是被 ...
- [转] WinForm自定义函数FindControl实现按名称查找控件
原文地址 WinForm自定义函数FindControl实现按名称查找控件 本文所述实例实现WinForm自定义函数FindControl实现按名称查找控件的功能,在C#程序开发中有一定的实用价值. ...
- linux文件名称查找which,whereis,locate
1. 文件名称查找 使用find查询时.因为磁盘查询.所以速度较慢. 所以linux下查询更常使用which, whereis, locate来查询,因为是利用数据库查询.所以速度非常快. 2. wh ...
- 枚举 switch case 标签必须为枚举常量的非限定名称
枚举 switch case 标签必须为枚举常量的非限定名称 错误描述: Error:(63, 24) 错误: 枚举 switch case 标签必须为枚举常量的非限定名称. 解决思路: switch ...
- c++11-17 模板核心知识(十三)—— 名称查找与ADL
名称分类 名称查找 ordinary lookup ADL (Argument-Dependent Lookup) 官网的例子 ADL的缺点 在C++中,如果编译器遇到一个名称,它会寻找这个名称代表什 ...
- WPF 通过名称查找属性(DependencyProperty)
使用名称来查找DependencyProperty. 如果有这样的需求,则是需要通过DependencyPropertyDescriptor来查找. 通常是使用附加属性或者依赖属性的方法. 下面给出附 ...
- WPF 按名称查找控件
1FrameworkElement类FindName方法 使用过程 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindN ...
- Qt 按名称查找子节点
TreeItem* TreeModel::GetItem(QStringList& list, TreeItem* parent ,int deep) { ).toString()) { if ...
- Oracle根据约束条件名称查找对应的数据
select * from dba_constraints where constraint_name = 'SYS_C0082752'
随机推荐
- urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>
解决办法: import ssl # 在请求之前加上 ssl._create_default_https_context = ssl._create_unverified_context
- 2017 ACM/ICPC Asia Regional Shenyang Online transaction transaction transaction
Problem Description Kelukin is a businessman. Every day, he travels around cities to do some busines ...
- BeanFilterUtil
package com.yundaex.utility.bean.filter; import java.util.ArrayList; import java.util.List; import o ...
- C/C++规范学习:
一 关于浮点数: 1.1浮点数是否等于0判断:因为浮点数都有精度,不能拿浮点数直接和0.0f进行比较,而应该采用以下方法: if (f32Data == 0.0f) // 隐含错误的比较 #defin ...
- TortoiseSVN 搭建本地版本库及简单操作使用
TortoiseSVN是windows上一款著名的版本控制软件,对于我们管理自己的代码,特别是对一个团队来说,非常重要. 本文探讨的是如何搭建本地的版本库. (1)安装TortoiseSVN之后需要创 ...
- Oozie安装的说明
不多说,直接干货! Oozie相当于Hadoop的一个客户端,因此集群中要有一台机器部署Oozie server端即可,由于可以有任意多个客户端连接Oozie,故每个客户端都必须部署Oozie cli ...
- boot and loader
boot and loader boot 程序的所有作用 清屏 将光标移到屏幕左上角 显示 Start Boot 提示信息 加载 loader 程序的代码到 0x10000 物理内存地址 将CPU的段 ...
- Docker:安装部署RabbitMQ
前言 今天原本想讲解SpringBoot集成RabbitMQ的,临近开始写时才发现家里的电脑根本没有安装RabbitMQ呀.这下只好利用已有的阿里云服务器,直接Docker安装一下了,顺道记录下,算是 ...
- wcf问题集锦
1.处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供 ...
- 如何将js导入时的小红叉去掉
右键WebRoot-Myeclipse-Exclude From Validation