我是C ++编程的新手,我们使用Turbo C ++(旧的IDE)来编译我们的程序。问题是在Turbo C ++中,我们在编程时从不使用命名空间甚至std :: cout。我们只需输入cout<< ....即可输出内容。
最近,我开始使用Visual C ++ 2010编写我的程序,我们认为必须在这里使用'using namespace std'或'std ::'。但是,即使我只使用cout<< .....并且没有'使用命名空间std'(编译器显示错误但得到输出),我得到了输出。
因此,我无法理解名称空间的使用。有人可以帮助我吗?
问候!
答案 0 :(得分:3)
命名空间只允许程序员避免构造命名冲突。这样我可以使用多个库,而不需要单个库担心它们的类具有相同的名称。 Java做了与包类似的东西,而C#也做了类似的事情,他们也称之为命名空间。
using namespace
语法只是意味着编译器应该在该命名空间中搜索在当前范围内无法找到的任何内容。
如果您没有被强制使用完全限定的std::
名称或using namespace
语法,那么您的程序中的某些内容可能已包含在内,可能是在#include
编辑中文件。
答案 1 :(得分:1)
显然你一直在使用包含'using namespace std'的(预编译)(header)包含; ANSI C ++标准规定标准库(在命名空间std
中)是(并且一直都是)答案 2 :(得分:1)
命名空间在确定要使用的类时很有用。假设您的程序有一个名为“Sample”的类。您还有一个或多个已定义名为“Sample”的类的DLL。
当您创建“Sample”的新实例时,它如何知道要使用哪个实现?您使用命名空间来区分要创建的类型。