一直使用using指明命名空间,但是没搞清楚,特地记录一下
using声明和using编译指令:目的都是为了简化对命名空间中的名称的使用
- using声明:使特定的标识符可用
- using编译指令:让整个命名空间中的名称可用
(1)using声明:如果局部变量和using声明同时出现在函数作用域内会出现问题
#include <iostream>
using namespace std;
namespace Android{
int num = 10;
}
int main(){
using Android::num;
cout << num << endl;
return 0;
}
输出:10
#include <iostream>
using namespace std;
namespace Android{
int num = 10;
}
int main(){
int num =20;
using Android::num;
cout << num << endl;
return 0;
}
输出:报错
但是你将
using Android::num移到main函数外面,就不会报错啦
(2)using编译指令:如果出现同名的变量,不会报错,使用就近原则
#include <iostream>
using namespace std;
namespace Android{
int num = 10;
}
int main(){
using namespace Android;
cout << num << endl;
return 0;
}
输出:10
#include <iostream>
using namespace std;
namespace Android{
int num = 10;
}
int main(){
int num = 20;
using namespace Android;
cout << num << endl;
return 0;
}
输出:20
当然啦,你将
using namespace Android放在main函数外面更没有问题,还是输出20
版权声明:本文为stephen_curry300原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。