C++之using声明和using编译指令

一直使用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版权协议,转载请附上原文出处链接和本声明。