📜  为什么在C++程序中编写“使用命名空间标准”很重要?

📅  最后修改于: 2021-05-30 05:34:58             🧑  作者: Mango

在本文中,我们将讨论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

解释:

  • 在上面的示例程序中, n1n2都具有分别具有相同名称xfun()的变量和函数。
  • 名称空间用于减少或限制任何变量或函数的范围。
  • 与上面的代码一样,变量x和方法fun()限于名称空间n1n2 。因此,它们的范围不在n1n2之外
  • 每次不需要在变量或定义的函数使用范围解析运算符(::)时,都可以使用“ 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 :: coutstd :: cinstd :: 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等的更多准备工作,请参阅“完整面试准备课程”