# 如何避免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)