::是运算符中等级最高的,它分为三种: 1)全局作用,用法(::name)
全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分如: char zhou; //全局变量 void sleep() { char zhou; //局部变量 zhou(局部变量) = zhou(局部变量) *zhou(局部变量) ; ::zhou(全局变量) =::zhou(全局变量) *zhou(局部变量); }
2)类作用,用法(class::name) 作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++为了避免不同的类有名称相同的成员而采用作用域的方式进行区分 如:A,B表示两个类,在A,B中都有成员member。那么 A::member就表示类A中的成员member B::member就表示类B中的成员member
3)命名空间作用,用法(namespace::name) 他们都是左关联(left-associativity) 他们的作用都是为了更明确的调用你想要的变量,如在程序中的某一处你想调用全局变量a,那么就写成::a,如果想调用class A中的成员变量a,那么就写成A::a,另外一个如果想调用namespace std中的cout成员,你就写成std::cout(相当于using namespace std;cout)意思是在这里我想用cout对象是命名空间std中的cout(即就是标准库里边的cout)