我想知道是否有人可以解释那些条款,因为我在许多地方遇到过它们。我知道一些关于它们的基本理论,但不确定我所知道的是对还是错。
那么请问任何人解释这些条款吗?
答案 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)
限定名称是指定范围的名称
请考虑以下示例程序,对cout
和endl
的引用是限定名称:
#include <iostream>
int main()
{
std::cout<<"Hello world!"<<std::endl;
return 0;
}
请注意,cout
和endl
的使用始于std::
。这些使他们合格的名称。
如果我们通过使用声明或指令*(例如using namespace std;
)将cout和endl带入范围,并且仅使用cout
和endl
,那么它们本来就是不合格的名称,因为他们缺少std::
。