猿问

using namespace XXX 和 using XXX:xxx; 的问题.

using namespace Exercise; 不会导致 ival 的 redeclaration,
但是 using Exercise::ival; 反而会导致 redeclaration 是为什么;

如下面的代码:

#include <iostream>using namespace std;namespace Exercise
{    int ivar = 0;    double dvar = 0;    const int limit = 1000;
}// using namespace Exercise;using Exercise::ivar;int ivar = 0;


慕莱坞森
浏览 773回答 2
2回答

收到一只叮咚

命名空间就是解决命名冲突问题的,不过你那个using Exercise::ivar;相当于declare了一遍Exercise里的ivar变量,就是说冲突的不是ivar和using Exercise::ivar,而是你又declareusing Exercise::ivar以下代码就没问题了,因为没有再次declareusing Exercise::ivar

吃鸡游戏

#include&nbsp;<iostream>using&nbsp;namespace&nbsp;std;namespace&nbsp;Exercise {&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;ivar&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;dvar&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;int&nbsp;limit&nbsp;=&nbsp;1000; }//&nbsp;using&nbsp;namespace&nbsp;Exercise;int&nbsp;ivar&nbsp;=&nbsp;0;int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;cout<<Exercise::ivar;&nbsp;&nbsp;&nbsp;&nbsp;cout<<ivar;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; }
随时随地看视频慕课网APP
我要回答