在本文中,我们将讨论C++程序中“ using namespace std”的使用。
需要命名空间:
- 由于不能在同一范围内为多个变量,函数,类等赋予相同的名称。
- 因此,为了克服这种情况,引入了名称空间。
程序1:
下面是C++程序,说明了使用具有相同名称的函数和变量的名称空间:
C++
// C++ program to illustrate the use
// of namespace with same name of
// function and variables
#include
using namespace std;
// Namespace n1
namespace n1 {
int x = 2;
// Function to display the message
// for namespace n1
void fun()
{
cout << "This is fun() of n1"
<< endl;
}
}
// Namespace n2
namespace n2 {
int x = 5;
// Function to display the message
// for namespace n2
void fun()
{
cout << "This is fun() of n2"
<< endl;
}
}
// Driver Code
int main()
{
// The methods and variables called
// using scope resolution(::)
cout << n1::x << endl;
// Function call
n1::fun();
cout << n2::x << endl;
// Function ca;;
n2::fun();
return 0;
}
C++
// C++ program to demonstrate the use
// of "using" directive
#include
using namespace std;
// Namespace n1
namespace n1 {
int x = 2;
void fun()
{
cout << "This is fun() of n1"
<< endl;
}
}
// Namespace is included
using namespace n1;
// Driver Code
int main()
{
cout << x << endl;
// Function Call
fun();
return 0;
}
C++
// C++ program illustrating the use
// of "using namespace" inside main()
#include
using namespace std;
// Namespace n1
namespace n1 {
int x = 2;
void fun()
{
cout << "This is fun() of n1"
<< endl;
}
}
// Function calling function
void print()
{
// Gives error, used without ::
fun();
}
// Driver Code
int main()
{
// Namespace inside main
using namespace n1;
cout << x << endl;
// Function Call
fun();
return 0;
}
C++
// Code written in the iostream.h file
namespace std {
ostream cout;
istream cin;
// and some more code
}
C++
// C++ program to illustrate
// the use of std
#include
// Driver Code
int main()
{
int x = 10;
std::cout << " The value of x is "
<< x << std::endl;
return 0;
}
输出:
2
This is fun() of n1
5
This is fun() of n2
解释:
- 在上面的示例程序中, n1和n2都具有分别具有相同名称x和fun()的变量和函数。
- 名称空间用于减少或限制任何变量或函数的范围。
- 与上面的代码一样,变量x和方法fun()限于名称空间n1和n2 。因此,它们的范围不在n1或n2之外。
- 每次不需要在变量或定义的函数使用范围解析运算符(::)时,都可以使用“ using ”指令来解决。
- using指令的意思是将在命名空间中编写的整个代码都包含在结束范围中。
程式2:
以下是C++程序,演示了“ using”指令的使用:
C++
// C++ program to demonstrate the use
// of "using" directive
#include
using namespace std;
// Namespace n1
namespace n1 {
int x = 2;
void fun()
{
cout << "This is fun() of n1"
<< endl;
}
}
// Namespace is included
using namespace n1;
// Driver Code
int main()
{
cout << x << endl;
// Function Call
fun();
return 0;
}
输出:
2
This is fun() of n1
解释:
- 在上述程序中,编写“使用命名空间n1 ”之后,无需使用范围解析来利用n1的成员。
- 可以将其解释为“使用”在命名空间中编写的代码副本到其编写范围的“副本”。
如果在main()内编写了“ using namespace n1 ”,并试图在不同的函数中使用成员(在这种情况下为fun()和x ),则会出现编译时错误。
程序3:
下面是C++程序,它说明了main()函数内部“使用命名空间”的用法:
C++
// C++ program illustrating the use
// of "using namespace" inside main()
#include
using namespace std;
// Namespace n1
namespace n1 {
int x = 2;
void fun()
{
cout << "This is fun() of n1"
<< endl;
}
}
// Function calling function
void print()
{
// Gives error, used without ::
fun();
}
// Driver Code
int main()
{
// Namespace inside main
using namespace n1;
cout << x << endl;
// Function Call
fun();
return 0;
}
输出:
解释:
- 众所周知,“ std”(标准的缩写)是一个名称空间,其成员在程序中使用。
- 因此,“ std”命名空间的成员是cout,cin,endl等。
- 该名称空间存在于iostream.h头文件中。
- 下面是C++中的代码片段,显示了iostream.h内部编写的内容:
C++
// Code written in the iostream.h file
namespace std {
ostream cout;
istream cin;
// and some more code
}
解释:
- 现在,当cout <<“ GeeksforGeeks”时;在编写时,编译器会在程序中搜索cout,该cout保留在std名称空间中,因此向编译器发出的指令是,如果编译器在当前作用域中找不到任何内容,请尝试在std名称空间中找到它。
- 不必编写命名空间,只需在每次使用std成员时使用范围解析(::)。例如, std :: cout , std :: cin , std :: endl等。
计划4:
下面是C++程序,说明了std的用法:
C++
// C++ program to illustrate
// the use of std
#include
// Driver Code
int main()
{
int x = 10;
std::cout << " The value of x is "
<< x << std::endl;
return 0;
}
输出:
The value of x is 10
说明:不管写“使用命名空间std”还是使用范围解析,程序的输出都是相同的。
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。