我想知道是否有人可以解释那些条款,因为我在许多地方遇到它们.我知道一些关于它们的基本理论,但不确定我所知道的是对还是错.
那么任何人都可以解释这些条款吗?
Sad*_*que 51
限定名称是指其所属位置的某种名称,例如类规范,名称空间规范等.非限定名称是不合格的名称.
阅读James McNellis的回答:
鉴于:
struct A {
struct B {
void F();
};
};
Run Code Online (Sandbox Code Playgroud)
A
是一个不合格的身份证.::A
是一个限定ID,但没有嵌套名称说明符.A::B
是一个限定ID,A::
是一个嵌套名称说明符.::A::B
是一个限定ID,A::
是一个嵌套名称说明符.A::B::F
是一个合格的-ID和两个B::
和A::B::
是嵌套名称符.::A::B::F
是一个合格的-ID和两个B::
和A::B::
是嵌套名称符.Alo*_*ave 15
限定名称是指定范围的名称.
请考虑以下示例程序,引用cout
和endl
是限定名称:
#include <iostream>
int main()
{
std::cout<<"Hello world!"<<std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
注意使用cout
和endl
开始std::
.这些使他们成为合格的名字.
如果我们把cout和ENDL到范围通过using声明或指令*(如using namespace std;
),只是用来cout
和endl
自己只是,他们本来不合格的名字,因为他们缺乏std::
.