一直使用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