双冒号:
1、作用域符号
前面一般是该类名称,后面是该类的成员名称。C++为避免不同的类有相同的成员而采用作用域的方式进行区分,eg:A,B表示两个类,在A,B中都有成员member,那么:A::member表示A中的成员member,B::member表示B中的成员member。
2、全局作用域符号
当全局变量在局部函数中与其中某个变量重名时,可以用::来区分,否则局部变量会屏蔽全局变量。
3、作用域分解运算符
比如声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f函数的定义,那么在类外定义f时,就要写成void A::f(),表示这个f函数是类A的成员函数
冒号:
构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。
1 struct _XXX{ 2 3 _XXX() : y(0xc0) { } 4 5 };