::表示作用域,和所属关系
1)global scope(
全局作用域符),用法(::name)
2)
class scope(类作用域符),用法(class::name)
3)namespace scope(命名空间作用域符),用法(namespace::name)
例如:
int g;
class A : PPP::B{//表示B类属于PPP命名空间
public:
int a;
int test();
static int add(int a,int b);
}
int A::test(){//表示test属于A类
return 0;
}
int A::add(int a,int b){
return a+b;
}
int test2(){
int a=::g; //用全局变量g
int result=A::add(a,2);//表示
静态方法属于A类
return result
}
---------------------------------------
。 -> ::的不同
首先介绍一下C语言中的结构。对于一个结构来说,
struct MyStruct {
int member_a;
};
如果有个变量MyStruct s,那么使用其中的成员元素时可以用
s.member_a = 1;
如果采用指针方法访问,比如MyStruct * ps,那么同样的访问必须用箭头号:
ps->member_a = 1;
::只用在类成员函数和类成员变量中。比如,声明一个类:
class CA {
public:
static int ca_var;
static int add(int a, int b);
int add(int a);
};
那么在实现这个函数时,必须这样书写:
int CA::add(int a, int b)
{
return a + b;
}
另外,双
冒号也常用于类静态方法和静态成员的调用。
int test(){
int a=CA::ca_var
return CA::add(a,2);
}