限定id/name和非限定id/name是什么?
What are qualified-id/name and unqualified-id/name?
我想知道是否有人可以解释一下这些术语,因为我在很多地方都遇到过它们。我知道一些关于它们的基本理论,但不确定我所知道的是对还是错。
谁能解释一下这些术语?
限定名是指具有某种指示其所属位置的名称,例如类规范、名称空间规范等。非限定名是指没有限定的名称。
阅读James McNellis的回答:
什么是嵌套名称说明符?
给定:
struct A {
struct B {
void F();
};
};
-
A
是非限定id。 -
::A
是限定id,但没有嵌套名称说明符。 -
A::B
为限定id,A::
为嵌套名称说明符。 -
::A::B
是限定id,A::
是嵌套名称说明符。 -
A::B::F
是限定id,B::
和A::B::
都是嵌套名称说明符。 -
::A::B::F
是限定id,B::
和A::B::
都是嵌套名称说明符。
限定名是指定作用域的名称。
考虑下面的示例程序,对cout
和endl
的引用是限定名:
#include <iostream>
int main()
{
std::cout<<"Hello world!"<<std::endl;
return 0;
}
注意cout
和endl
的使用是从std::
开始的。这使它们成为限定名。
如果我们通过using声明或指令*(如using namespace std;
)将cout和endl带入作用域,并且仅使用cout
和endl
本身,它们将是非限定名,因为它们缺少std::
。
相关文章:
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 从函数角度看ID到文件路径的内部与外部映射
- 通过组合不同的类型来创建唯一的id
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- FFMPEG配置文件级别id大小无效
- 方法内部但循环仍得到预期的不合格id错误C++
- 如何获取 GLFW 窗口 ID?
- C++中"dependent name"的定义是什么?
- 当简单捕获中的标识符显示为参数的声明符 ID 时,没有编译器诊断
- 显示数组中的学生 ID 和最高分
- C++:"("令牌"之前有预期的非限定 id 指向类中成员函数的指针
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- Xcode 9.4.1 中的 Apple Mach-O 链接器 (id) 错误
- 错误:令牌 { '{' 之前应存在非限定 ID
- 将系数存储在头文件的数组中("does not name a type"错误)
- 断言"id < 0"在Qt ActiveX中失败
- "expected unqualified-id before 'void'" & "string in class does not name a type" 错误
- 在类模板定义中使用template-name代替template-id
- 非类-name c++ 11类型-name是一个simple-template-id
- 限定id/name和非限定id/name是什么?