什么是合格的id /名称和非限定的id /名称?

我想知道是否有人能够解释这些条款,因为我在很多地方遇到这些条款。 我知道一些关于他们的基本理论,但不知道我所知道的是对还是错。

那么,任何人都可以解释这些条款吗?

一个合格的名字是指明它属于什么的一个名字,比如一个类的规范,名字空间规范等。一个不合格的名字是不合格的名字。

阅读James McNellis的回答:

什么是嵌套的名称说明符?

鉴于:

struct A { struct B { void F(); }; }; 
  • A是一个不合格的id
  • ::A是一个限定符,但没有嵌套名称说明符
  • A::B是一个限定符A::是一个嵌套的名称说明符
  • ::A::B是一个限定的idA::是一个嵌套的名称说明符
  • A::B::F限定符号B::A::B::都是嵌套名称说明符
  • ::A::B::F合格的idB::A::B::都是嵌套名称说明符

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

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

请注意,使用coutendlstd::开始。 这些使他们合格的名字

如果我们通过使用声明或指令*(例如using namespace std; )将cout和endl引入到范围中,并且仅仅使用coutendl ,则它们将是非限定名称 ,因为它们缺lessstd::