:: 作用域运算符(表明 数据,方法归属)
int a=10;
void test(){
int a=20;
cout << a << endl; //20 局部变量在作用域内具有较高的优先权,屏蔽全局变量
//访问全局变量
cout << ::a << endl; //10
}
命名空间
避免标识符命名发生冲突,C++ 引入 关键字 namespace(命名空间),更好的控制标识符作用域。
注意:命名空间只能在全局范围内定义。
namespace A{int a=10;}
namespace B{int b=20;}
void test(){
cout << A::a << endl;
cout << B::b << endl;
}
命名空间内定义变量和函数
namespace A{
int a=10;
//即可声明又可实现
void func();
void func1(){};
}
//成员函数
void A::func(){
cout << a << endl; //此处可以不用 A:: , 因为 A::func 已经表明是命名空间A
}
//普通函数
void funcx(){
cout << A::a << endl; //必须 A::
}
匿名命名空间
namespace{
//属性,方法的作用范围 只属于该文件
}