📜  C++中的命名空间设置3(访问,创建标题,嵌套和别名)

📅  最后修改于: 2021-05-30 16:57:44             🧑  作者: Mango

C++中的命名空间|设置1(简介)
C++中的命名空间|集合2(扩展名称空间和未命名名称空间)

访问名称空间的不同方法

在C++中,有两种访问名称空间变量和函数的方法。

  1. 正常方式
    // C++ program to demonstrate accessing of variables
    // in normal way, i.e., using "::"
    #include 
    using namespace std;
      
    namespace geek
    {
        int rel = 300; 
    }
      
    int main()
    {
        // variable ‘rel’ accessed 
        // using scope resolution operator
        cout << geek::rel << "\n";  // prints 300
      
        return 0;
    }
    

    输出 :

    300
    
  2. “使用”指令
    // C++ program to demonstrate accessing of variables
    // in normal way, i.e., using "using" directive
    #include 
    using namespace std;
      
    namespace geek
    {
        int rel = 300; 
    }
      
    // use of ‘using’ directive
    using namespace geek;
      
    int main()
    {
       // variable ‘rel’ accessed 
       // without using scope resolution variable
       cout << rel << "\n";        //prints 300
        
       return 0;
    }
    

    输出:

    300
    

在头文件中使用名称空间

我们可以在一个文件中创建名称空间,并使用另一程序访问内容。这是通过以下方式完成的。

  • 我们需要创建两个文件。其中一个包含名称空间以及我们以后要使用的所有数据成员和成员函数。
  • 并且另一个程序可以直接调用第一个程序以使用其中的所有数据成员和成员函数。

文件1

// file1.h 
namespace foo
{
    int value() 
    { 
       return 5;    
    }
}

文件2

// file2.cpp - Not to be executed online
#include 
#include “file1.h” // Including file1
using namespace std;
  
int main () 
{
    cout << foo::value();
    return 0;
}

在这里,我们可以看到在file1.h中创建了名称空间,并且在file2.cpp中调用了该名称空间的value()。

嵌套命名空间

在C++中,名称空间也可以嵌套,即一个名称空间嵌套在另一个名称空间中。名称空间变量的解析是分层的。

// C++ program to demonstrate nesting of namespaces
#include 
using namespace std;
  
// Nested namespace
namespace out
{
  int val = 5; 
  namespace in
  {
      int val2 = val;    
  }
}
  
// Driver code
int main()
{
  cout << out::in::val2;   // prints 5
  return 0;
}

输出 :

5

命名空间别名

在C++中,您可以为名称空间名称使用别名,以方便使用。现有名称空间可以使用以下语法,以新名称作为别名:

namespace new_name = current_name;
#include 
  
namespace name1 
{
    namespace name2 
    {
         namespace name3 
         {
             int var = 42;
         }
    }
}
  
// Aliasing 
namespace alias = name1::name2::name3;
   
int main()
{
    std::cout << alias::var << '\n';
}

输出 :

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