c++中在使用using namespace std时里面的名称不管需要与否,都导出名称空间中的所有名称,这是于名称空间的初衷背道而驰的,如果该名称与局部名称发生冲突,编译器将发出指示。using编译命令导入所有的名称,包括可能并不需要的名称。如果与局部名称发生冲突,则局部名称将覆盖名称空间版本,而编译器并不会发出警告。另外,名称空间的开放性意味着名称空间的名称可能分散在多个地方,这使得难以准确知道添加了哪些名称。
因此,避免使用using namespace std,转而使用using std::xxxx效果会更好,避免出现xxx未定义或者冲突。
如下,ctime已经定义了时间类的东西,但是在编译时还会报没定义的错误,当然还有一个问题是可能出现系统自带的时间类和自己定义的或安装的新库里定义的时间类冲突了:

本文讨论了C++编程中使用usingnamespacestd带来的问题,包括潜在的名称冲突和编译器警告缺失等,并建议采用更精确的using声明来避免这些问题。

被折叠的 条评论
为什么被折叠?



