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