在使用C++命名空间时,您是否更喜欢显式地命名它们,如下所示:
std::cout << "Hello, world!\n";
或者你更喜欢using namespace
using namespace std;
cout << "Hello, world!\n";
如果你更喜欢后者,你是在文件还是在函数作用域声明你的用法?
就我个人而言,我更喜欢显式地命名它们--它更像是类型,但当混合使用名称空间(例如std
和boost
)时,我发现它更具可读性。
发布于 2008-10-18 11:35:34
我总是使用using namespace
进行std & boost。其他所有东西我都倾向于使用显式的名称空间,除非它使用得太多,会使代码变得混乱。
在头文件中,我从不使用using namespace
来避免污染#including source的全局命名空间。
发布于 2008-10-18 11:39:13
我总是使用显式的。编写std不会伤害我,我清楚地知道它是从哪里来的。当你有一些遗留的项目需要维护它自己的“字符串”、“向量”等时,它是很有用的。代码携带的信息越多越好。
发布于 2008-10-18 12:05:13
我的一般规则是总是显式地在头中使用名称空间,并且通常在代码中使用using。前者的原因是为了在定义的每个部分中明确说明正在使用的是什么,而后者的原因是,如果需要的话,可以很容易地使用来自另一个名称空间的替换。也就是说,如果我们想要开始使用foo::string而不是std::string,我们只需要更新头文件和using语句,而不是在代码中用foo::string替换std::string的每个实例。
当然,这对于驻留在std::命名空间中的类用处不大,因为即使您替换了一个类,您仍然可能在std中使用其他类,并且可能会遇到歧义问题,但这只是一个示例。
https://stackoverflow.com/questions/214927
复制相似问题