:: 在C++中是常用的一个符号,Java中没有。它主要的意思是表达所属关系,
主要解决三个场景下无法区分变量所属关系的问题。
1. 不同的类有相同名字的成员,采用::区分
比如 A类和B类中有一个名字相同的变量member
java中用前面加上包名区分。
class A{
int member;
};
class B{
int member;
};
A::member;
B::member;
A::member 表示A类中的成员member
B::member 表示B类中的成员member
2.全局变量和局部变量名字相同
java中通常用this来表示类的全局变量。
int a; // 全局变量
void test ()
{
int a = ::a;//用全局变量,给本地变量a赋值
}
3.抽象函数在其它类实现,用::表示该函数所属类
java不支持抽象方法在非子类中实现。
class A
{
public:
int test();
}
int A::test()//表示test是属于A的
{
return 0;
}
另外
::在最开头时表示顶层命名空间,全局变量
std::string <==> ::std::string