我是一个c++的新手。
在Eclipse(配置了MinGW)和其他线程中,我注意到使用将类添加到命名空间中。
我提供一个示例来展示我的疑惑:
#ifndef MODEL_MANGO_HPP_
#define MODEL_MANGO_HPP_
namespace std {
class Mango {
public:
Mango();
virtual ~Mango();
};
} /* namespace std */
#endif /* MODEL_MANGO_HPP_ */
编辑:正如评论中所示,向命名空间std添加类是完全禁止的。引用@owacoder的话:
命名空间从不关闭,因此您始终可以向其中添加类定义。但是,按照规范,应将std命名空间视为关闭。
为了让您完整地了解上下文,这里是Eclipse为我默认生成的Mango.cpp实现:
#include "Mango.hpp"
namespace std {
Mango::Mango() {
// TODO Auto-generated constructor stub
}
Mango::~Mango() {
// TODO Auto-generated destructor stub
}
} /* namespace std */
所以我的问题变成了: 为什么要使用 "namespace std {...}",何时在命名空间中添加类是一个好的实践?
std
命名空间被视为已关闭。 - undefined