我很清楚使用命名空间,然而,我偶尔会遇到使用特定类的使用。例如:
#include <string>
using namespace std;
(...)
但是 - 我时不时地看到:
using std::string;
在这种情况下,我该如何解释“使用”?
干杯
答案 0 :(得分:23)
使用std :: string只需将std :: string导入当前作用域(也就是说,你可以使用'string'而不是'std :: string')而不将所有内容从:: std导入当前作用域。 / p>
编辑:评论后的澄清。
答案 1 :(得分:12)
using namespace foo
允许您无需限定地访问名称空间foo中的所有名称。 using foo::bar
允许您无限制地使用bar
,但不能使用foo中的任何其他名称。
答案 2 :(得分:3)
在这种情况下,它允许您在没有限定条件的情况下绑定到命名空间中的特定类型。与允许您绑定到任何类型的第一种情况相反。
答案 3 :(得分:3)
您可以在不使用std ::之前使用string
类。但是,如果您想使用其他内容(例如矢量),则需要使用std::vector
答案 4 :(得分:1)
也会让事情变得更复杂,可以这样做:
class Base {
protected:
void f();
};
class Fun: public Base {
public:
using Base::f;
};
现在你有了很好的公共方法。