如何避免c++中using语句造成的名称冲突

# 如何避免c++中using语句造成的名称冲突


使用如:using namespace std; 的using 语句确实很简便,但是这将该命名空间的所有名称都调用出来了,这就增大了名称冲突的可能性。所以有些程序员建议在头文件中不要使用using 语句,执行文件可以酌情使用,并建议使用using std::cin; 然而这样一来程序就变得复杂很多,还有一种方法,就是将using namespace std; 放到自己的命名空间中,如下图中代码所示。这样就可以鱼与熊掌兼得:既使用了using namespace std;以加快打码速度, 又避免了增加名称冲突的增加。


    #include <iostream>
    namespace ns {
        void cin(void); 
    }

    int main() {
        using namespace ns;
        cin();
        return 0;
    }

    void ns::cin(void) {
        using namespace std;
        string a;
        std::cin >> a ; //不能直接使用cin,
               //这与函数名冲突 
        cout << "hello " << a << endl;
    }

(初学c++, 在知乎中了解到这一有趣问题,如果理解的不透彻,望前辈们指教,知乎链接: https://www.zhihu.com/question/26911239)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值