【发布时间】:2010-09-18 09:23:35
【问题描述】:
我在 C++ 中使用 'using' 声明将 std::string 和 std::vector 添加到本地命名空间(以节省键入不必要的 'std::'s)。
using std::string;
using std::vector;
class Foo { /*...*/ };
此声明的范围是什么?如果我在标头中执行此操作,它会将这些“使用”声明注入到包含标头的每个 cpp 文件中吗?
【问题讨论】:
-
以防万一这里的其他答案不清楚:- 不要在包含文件/标题的文件范围内放置
using声明(或using指令)! 这会让 header 的用户很头疼。 -
事实上,不要将
using声明(更何况指令)放在标题中根本,甚至命名空间! 请参阅 scope of using declaration within a namespace 了解由此引起的问题。 -
@NilsvonBarth:这有点过于简单了。对于所讨论的问题,在类和函数范围内使用
using是安全的。 -
您可能有兴趣了解ADL C++ lookup 功能。
标签: c++