双冒号(::)的用法
1、表示“域操作符”
例如:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时, 就要写成void A::f(),表示这个f()函数是类A的成员函数。
2、直接用在全局函数前,表示是全局函数
例如:在VC里,你可以在调用API 函数里,在API函数名前加::
全局作用域,用来区分局部、全局的。最容易被忽视的一种,很多时候写了一个全局函数或者想要调用一个全局函数,却发现IDE或者Editor找不到该函数,原因是因为局部函数与想要调用的全局函数名字一样,然后找了很久也找不到原因,甚至放弃解决的。其实原因就是因为 【局部变量/函数】 与 【全局变量/函数】 的名字相同,IDE无法区分,这时候加上 :: 就可以调用到全局函数,访问到全局变量了。
3、表示引用成员函数及变量,作用域成员运算符
例如:System::Math::Sqrt() 相当于System.Math.Sqrt()
4、命名空间作用域,用来注明所使用的类、函数属于哪一个命名空间的
例如:std::cout << "Hello World" << std::endl;
5、类作用域,用来标明类的变量、函数
例如:Human::setName(char* name);