为什么在C++程序中写using namespace std很重要
本文将讨论在C++程序中使用 “using namespace std” 的用法。
namespace的需要:
- 在同一作用域中不能给多个变量、函数、类等起相同的名字。
- 因此,引入了namespace来解决这种情况。
程序1:
以下是C++程序示例,演示了在函数和变量名称相同情况下使用namespace:
输出结果:
解释:
- 在上面的示例程序中,n1和n2都有相同名称的变量和函数x和fun()。
- namespace用于减少或限制任何变量或函数的作用域。
- 在上述代码中,变量x和方法fun()被限制为namespace n1和n2。因此,它们的作用域不在n1或n2之外。
- 不必每次在变量或函数定义中都使用作用域解析运算符(::),可以使用“using”指令解决。
- using指令表示将命名空间中编写的整个代码包括在闭合作用域中。
程序2:
以下是C++程序示例,演示了使用“using”指令:
输出结果:
解释:
- 在上面的程序中,写了“using namespace n1”之后,不需要使用作用域解析来利用n1的成员。
- 可以理解为使用“using”将命名空间中编写的代码复制到它所编写的作用域中。
如果在 main() 内部编写“using namespace n1 ”,并试图在不同的函数中使用成员(fun()和x在这种情况下),会导致编译时错误。
程序3:
下面是一个C++程序,演示了在 main() 函数内部使用“using namespace”的用法:
输出:
解释:
- 著名的“std”(标准)是一个名称空间,其成员在程序中使用。
- 因此,“std”名称空间的成员是cout,cin,endl等。
- 该名称空间存在于iostream.h文件中。
下面是在C++中显示写入iostream.h中的内容的代码片段:
解释:
- 现在当输入 cout <<“GeeksforGeeks”;, 编译器在我们的程序中搜索cout,该cout保存在std名称空间中,因此给编译器的指令是如果编译器在当前范围内找不到任何东西,则尝试在std名称空间中查找它。
- 不需要写入名称空间,只需使用每次使用std的成员时使用作用域解析(::)。例如,std::cout,std::cin,std::endl等。
程序4:
下面是使用std的C++程序演示:
输出:
解释: 无论是写入“using namespace std”还是使用作用域解析,程序的输出都将是相同的。