什么是合格的id /名称和非限定的id /名称?
我想知道是否有人能够解释这些条款,因为我在很多地方遇到这些条款。 我知道一些关于他们的基本理论,但不知道我所知道的是对还是错。
那么,任何人都可以解释这些条款吗?
一个合格的名字是指明它属于什么的一个名字,比如一个类的规范,名字空间规范等。一个不合格的名字是不合格的名字。
阅读James McNellis的回答:
什么是嵌套的名称说明符?
鉴于:
struct A { struct B { void F(); }; };
-
A
是一个不合格的id 。 -
::A
是一个限定符,但没有嵌套名称说明符 。 -
A::B
是一个限定符 ,A::
是一个嵌套的名称说明符 。 -
::A::B
是一个限定的id ,A::
是一个嵌套的名称说明符 。 -
A::B::F
是限定符号 ,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 namespace std;
)将cout和endl引入到范围中,并且仅仅使用cout
和endl
,则它们将是非限定名称 ,因为它们缺lessstd::
。