什么是限定的-id/name 和非限定的-id/name?

我想知道是否有人可以解释这些术语,因为我在很多地方都遇到过。我知道一些关于它们的基本理论,但不确定我所知道的是对还是错。

有人能解释一下这些术语吗?

44755 次浏览

限定名是指某种指示它属于哪里的名称,例如类规范、名称空间规范等。不限定名称是指不限定的名称。

点击这里阅读 James McNellis 的回答:

什么是嵌套名称说明符?

给出:

struct  A {
struct B {
void F();
};
};
  • A不合格证件
  • ::A身份证明但没有 嵌套名称说明符
  • A::B身份证明A::嵌套名称说明符
  • ::A::B身份证明A::嵌套名称说明符
  • A::B::F身份证明B::A::B::都是 嵌套名称说明符
  • ::A::B::F身份证明B::A::B::都是 嵌套名称说明符

限定名是指定范围的名称。
考虑下面的示例程序,对 coutendl的引用是限定名称:

#include <iostream>


int main()
{
std::cout<<"Hello world!"<<std::endl;
return 0;
}

请注意,coutendl的使用是从 std::开始的,它们使它们成为 合格的名字

如果我们通过 using 声明或指令 * (比如 using namespace std;)将 cout 和 endl 引入作用域,并且仅仅使用 coutendl,那么它们应该是 不合格的名字,因为它们缺少 std::