关于“使用”关键字的问题

时间:2009-09-10 18:31:21

标签: c++

我很清楚使用命名空间,然而,我偶尔会遇到使用特定类的使用。例如:

#include <string>
using namespace std;
(...)

但是 - 我时不时地看到:

using std::string;

在这种情况下,我该如何解释“使用”?

干杯

5 个答案:

答案 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;
};

现在你有了很好的公共方法。