这是我的代码:
#ifndef DATE_H_
#define DATE_H_
namespace std {
class Date {
public:
Date();
virtual ~Date();
};
} /* namespace std */
#endif /* DATE_H_ */
我为我的作业创建了课程日期,并创建了它
namespace std{......}
。我不知道它的用途。
为什么不像往常那样写use namespace std;
有什么区别?
答案 0 :(得分:5)
您的代码在命名空间std中声明您的类Date,即您的类完全限定名称将是std :: Date
声明
using namepace std;
在搜索符号时将包含命名空间std。
一些补充说明:
using namespace
不是一个好习惯...因为它可能会出现意外的副作用,并且符号被解析为错误命名空间。答案 1 :(得分:3)
首先:你不应该在std
命名空间中放任何东西。
namespace foo
{
class A {};
}
将类A
放入名称空间foo
,因此其全名为foo::A
。
using namespace foo;
表示您可以在不使用限定符foo
的情况下访问foo::
中的所有内容。
请注意,using namespace
通常不受欢迎,可能导致许多意外问题
最重要的是,不要在标题中写下来。
如果你说
using namespace foo;
class A{};
A
不在foo
内,而是在全局命名空间中。