1、引用全局变量、函数
int i = 0; void test() { int i = 3; cout<<i; //输出函数中的局部变量i cout<<::i; //输出全局变量i }
2、指定某个范围的成员
class A { public: int bbb(); //可以在类里面定义bbb,当你在类外面定义的时候就要指定他是属于哪个类的成员函数 }; int A::bbb() { cout << "类的外部定义"; }
如果没有int A::bbb()只是写了int bbb()的话就会说bbb没有声明,会出错的
3、名称作用域解析符
名字空间是一种逻辑分组的机制.也就是说,如果有一些声明按照某种标准在逻辑上属于同一个集团,就可以将它们放入同一名字空间,以表明这个事实,例如,我定义一个名字空间N 将变量a, b 函数f()放入其中
int a; namespace N{ int a, b; void f(){ ::a=1; //(被屏蔽的)全局a的限定名 a=10; //非限定名访问内层a } } void g() { a=10; //全局的a N::a=7; //名字空间N作用域中的a(限定名) }
位于作用域解析运算符左边的限定符必须或者是一个名字空间的名字,或者是一个类对象的名字,
这也意味着,局部于某个函数的名字不能通过限定名的方式访问