Latest web development tutorials

C ++ namespace

Bayangkan situasi ketika ada kelas bernama Zara dua siswa, untuk membedakan dengan jelas antara mereka, kita menggunakan nama di luar, harus menggunakan beberapa informasi tambahan, seperti alamat rumah mereka atau orang tua mereka nama, dll

Situasi yang sama juga muncul di C ++ aplikasi. Misalnya, Anda mungkin menulis fungsi bernama xyz (), di perpustakaan lain yang tersedia ada juga fungsi xyz yang sama (). Dengan demikian, compiler tidak dapat menentukan apa yang Anda menggunakan xyz () fungsi.

Oleh karena itu, pengenalan konsepruang nama, yang dirancang untuk mengatasi masalah di atas, dapat digunakan sebagai informasi tambahan untuk membedakan perpustakaan yang berbeda dengan fungsi nama yang sama, kelas, variabel, dan sebagainya.Menggunakan namespace yang didefinisikan konteks. Pada intinya, namespace adalah definisi berbagai.

mendefinisikan ruang nama

Didefinisikan namespace kata kuncinamespace, diikuti dengan nama namespace, sebagai berikut:

namespace namespace_name {
   // 代码声明
}

Dalam rangka untuk memanggil fungsi atau variabel dengan namespace, Anda harus mendahuluinya dengan nama namespace, sebagai berikut:

name::code;  // code 可以是变量或函数

Mari kita lihat bagaimana definisi namespace untuk entitas dan fungsi variabel atau lainnya:

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
int main ()
{
 
   // 调用第一个命名空间中的函数
   first_space::func();
   
   // 调用第二个命名空间中的函数
   second_space::func(); 

   return 0;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Inside first_space
Inside second_space

menggunakan instruksi

Anda dapat menggunakannamespace direktif menggunakan,sehingga ketika Anda tidak dapat menggunakan namespace diawali dengan nama namespace. direktif ini memberitahu compiler bahwa kode berikutnya akan menggunakan nama namespace yang ditentukan.

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
using namespace first_space;
int main ()
{
 
   // 调用第一个命名空间中的函数
   func();
   
   return 0;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Inside first_space

menggunakan petunjuk juga dapat digunakan untuk menentukan item namespace tertentu. Misalnya, jika Anda hanya berniat untuk menggunakan std bagian namespace cout, Anda dapat menggunakan pernyataan berikut:

using std::cout;

Kode berikutnya bila menggunakan cout Anda tidak dapat menambahkan nama namespace sebagai awalan, tapistd namespace barang-barang lainnya masih perlu menambahkan nama namespace sebagai awalan, sebagai berikut:

#include <iostream>
using std::cout;

int main ()
{
 
   cout << "std::endl is used with std!" << std::endl;
   
   return 0;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

std::endl is used with std!

Namamenggunakan petunjuk diperkenalkan mengikuti aturan lingkup normal.Nama daridirektif menggunakan awalnya terlihat sampai akhir rentang.Dalam hal ini, nama yang sama di luar lingkup definisi entitas tersembunyi.

namespace terputus-putus

Namespace dapat didefinisikan dalam beberapa bagian yang berbeda, sehingga namespace ini terdiri dari beberapa bagian secara terpisah didefinisikan komposisi. Berbagai komponen namespace dapat tersebar di beberapa file.

Oleh karena itu, jika namespace bagian dari kebutuhan untuk meminta nama didefinisikan dalam file lain, Anda masih perlu untuk menyatakan nama. Definisi namespace berikut dapat menentukan namespace baru, bisa untuk ruang nama yang ada untuk menambahkan elemen baru:

namespace namespace_name {
   // 代码声明
}

ruang nama bersarang

Namespaces dapat bersarang, Anda dapat menentukan namespace lain dalam namespace, sebagai berikut:

namespace namespace_name1 {
   // 代码声明
   namespace namespace_name2 {
      // 代码声明
   }
}

Anda dapat menggunakan :: operator untuk mengakses anggota namespace bersarang:

// 访问 namespace_name2 中的成员
using namespace namespace_name1::namespace_name2;

// 访问 namespace:name1 中的成员
using namespace namespace_name1;

Dalam pernyataan di atas, jika Anda menggunakan namespace_name1, maka dalam berbagai elemen namespace_name2 juga tersedia sebagai berikut:

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
   // 第二个命名空间
   namespace second_space{
      void func(){
         cout << "Inside second_space" << endl;
      }
   }
}
using namespace first_space::second_space;
int main ()
{
 
   // 调用第二个命名空间中的函数
   func();
   
   return 0;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Inside second_space