什么是qualified-id / name和unqualified-id / name?

时间:2011-08-31 13:26:39

标签: c++

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

那么请问任何人解释这些条款吗?

2 个答案:

答案 0 :(得分:46)

限定名称是指具有某种特征的名称,例如,类规范,命名空间规范等。非限定名称是不合格的名称。

在这里阅读James McNellis的回答:

What is a nested name specifier?

假设:

struct  A {
    struct B {
        void F();
    };
};
  • A unqualified-id
  • ::A qualified-id ,但没有嵌套名称说明符
  • A::B qualified-id A::嵌套名称说明符
  • ::A::B qualified-id A::嵌套名称说明符
  • A::B::F qualified-id B::A::B::都是嵌套名称说明符
  • ::A::B::F qualified-id B::A::B::都是嵌套名称说明符

答案 1 :(得分:15)

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

#include <iostream>

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

请注意,coutendl的使用始于std::。这些使他们合格的名称

如果我们通过使用声明或指令*(例如using namespace std;)将cout和endl带入范围,并且仅使用coutendl,那么它们本来就是不合格的名称,因为他们缺少std::

相关问题