1

我是 C++ 编程新手,我们使用 Turbo C++(旧 IDE)来编译我们的程序。问题是在 Turbo C++ 中,我们在编程时从不使用命名空间甚至 std::cout。我们只需键入 cout<<.... 即可输出内容。

最近,我开始使用 Visual C++ 2010 编写我的程序,据说我们必须在这里使用 'using namespace std' 或 'std::'。但是,即使我只使用 cout<<..... 并且没有“使用命名空间 std”(编译器显示错误但得到输出),我也得到了输出。

因此,我无法理解名称空间的使用。有人可以帮我吗?

问候!

4

3 回答 3

3

命名空间只是允许程序员避免构造命名冲突。这样我就可以使用多个库,而各个库不必担心它们的类具有相同的名称。Java 对包做了类似的事情,而 C# 也做了类似的事情,他们称之为命名空间。

语法只是意味着编译器应该在该using namespace命名空间中搜索它在当前范围内找不到的任何声明。

如果您没有被迫使用完全限定std::名称或using namespace语法,那么您的程序中的某些内容可能已经包含它,可能在#includeed 文件中。

于 2011-04-06T19:02:28.040 回答
1

显然,您一直在使用(预编译的)(标头)包含包含“使用命名空间 std”的内容;ANSI C++ 标准要求标准库(并且一直)在命名空间 std

于 2011-04-06T18:56:12.567 回答
1

命名空间在确定使用哪个类时很有用。假设您的程序有一个名为“Sample”的类。您还有一个或多个定义了一个名为“Sample”的类的 DLL。

当您创建“Sample”的新实例时,它如何知道要使用哪个实现?您使用命名空间来区分要创建的类型。

于 2011-04-06T18:56:43.703 回答