📌  相关文章
📜  C++中的名称空间|集合2(扩展名称空间和未命名名称空间)

📅  最后修改于: 2021-05-25 23:42:07             🧑  作者: Mango

我们在下面的集合1中引入了名称空间。

C++中的命名空间|设置1(简介)

还可以在全局空间中创建多个名称空间。这可以通过两种方式完成。

  • 具有不同名称的名称空间
    // A C++ program to show more than one namespaces 
    // with different names.
    #include 
    using namespace std;
      
    // first name space
    namespace first
    {
       int func() {  return 5; }
    }
      
    // second name space
    namespace second
    {
       int func() { return 10; }
    }
      
    int main()
    {
       // member function of namespace
       // accessed using scope resolution operator
       cout << first::func() <<"\n";        
       cout << second::func() <<"\n"; 
       return 0;
    }
    

    输出:

    5
    10
    
  • 扩展名称空间(两次使用相同的名称)
    也可以创建两个具有相同名称的名称空间块。第二个名称空间块实际上只是第一个名称空间的延续。用简单的话来说,我们可以说两个名称空间没有不同,但实际上是相同的,它们是部分定义的。
    // C++ program to demonstrate namespace exntension
    #include 
    using namespace std;
      
    // first name space
    namespace first 
    { 
       int val1 = 500;  
    }
      
    // rest part of the first namespace
    namespace  first 
    { 
       int val2 = 501;  
    }
      
    int main()
    {
       cout << first::val1 <<"\n";        
       cout << first::val2 <<"\n"; 
       return 0;
    }
    

    输出:

    500
    501
    

未命名的命名空间

  • 它们可直接在同一程序中使用,并用于声明唯一标识符。
  • 在未命名的命名空间中,命名空间的名称未在命名空间的声明中提及。
  • 名称空间的名称由编译器唯一生成。
  • 您创建的未命名名称空间只能在您在其中创建的文件中访问。
  • 未命名的命名空间代替了变量的静态声明。
// C++ program to demonstrate working of unnamed 
// namespaces
#include 
using namespace std;
  
// unnamed namespace declaration
namespace 
{
   int rel = 300; 
}
  
int main()
{
   cout << rel << "\n"; // prints 300
   return 0;
}

输出:

300
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”