Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Ruang nama di C++

Pertimbangkan situasi, ketika kita memiliki dua orang dengan nama yang sama, Zara, di kelas yang sama. Setiap kali kita perlu membedakan mereka pasti kita harus menggunakan beberapa informasi tambahan bersama dengan nama mereka, seperti daerah, jika mereka tinggal di daerah yang berbeda atau nama ibu atau ayah mereka, dll.

Situasi yang sama dapat muncul di aplikasi C++ Anda. Misalnya, Anda mungkin menulis beberapa kode yang memiliki fungsi yang disebut xyz() dan ada perpustakaan lain yang tersedia yang juga memiliki fungsi yang sama xyz(). Sekarang kompilator tidak memiliki cara untuk mengetahui versi fungsi xyz() mana yang Anda maksud di dalam kode Anda.

Sebuah ruang nama dirancang untuk mengatasi kesulitan ini dan digunakan sebagai informasi tambahan untuk membedakan fungsi, kelas, variabel, dll yang serupa dengan nama yang sama tersedia di perpustakaan yang berbeda. Menggunakan namespace, Anda dapat menentukan konteks di mana nama didefinisikan. Intinya, namespace mendefinisikan ruang lingkup.

Mendefinisikan Namespace

Definisi namespace dimulai dengan kata kunci namespace diikuti dengan nama namespace sebagai berikut

namespace namespace_name {
   // code declarations
}

Untuk memanggil versi fungsi atau variabel yang mendukung namespace, tambahkan (::) nama namespace sebagai berikut −

name::code;  // code could be variable or function.

Mari kita lihat bagaimana ruang lingkup nama entitas termasuk variabel dan fungsi

Demo Langsung
#include <iostream>
using namespace std;

// first name space
namespace first_space {
   void func() {
      cout << "Inside first_space" << endl;
   }
}

// second name space
namespace second_space {
   void func() {
      cout << "Inside second_space" << endl;
   }
}

int main () {
   // Calls function from first name space.
   first_space::func();
   
   // Calls function from second name space.
   second_space::func(); 

   return 0;
}

Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut

Inside first_space
Inside second_space

Direktif penggunaan

Anda juga dapat menghindari penambahan ruang nama dengan menggunakan namespace pengarahan. Arahan ini memberi tahu kompiler bahwa kode berikutnya menggunakan nama di namespace yang ditentukan. Namespace demikian tersirat untuk kode berikut

Demo Langsung
#include <iostream>
using namespace std;

// first name space
namespace first_space {
   void func() {
      cout << "Inside first_space" << endl;
   }
}

// second name space
namespace second_space {
   void func() {
      cout << "Inside second_space" << endl;
   }
}

using namespace first_space;
int main () {
   // This calls function from first name space.
   func();
   
   return 0;
}

Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut

Inside first_space

Arahan 'menggunakan' juga dapat digunakan untuk merujuk ke item tertentu dalam namespace. Misalnya, jika satu-satunya bagian dari ruang nama std yang ingin Anda gunakan adalah cout, Anda dapat merujuknya sebagai berikut −

using std::cout;

Kode berikutnya dapat merujuk ke cout tanpa mengawali namespace, tetapi item lain di std namespace masih perlu eksplisit sebagai berikut

Demo Langsung
#include <iostream>
using std::cout;

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

Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut

std::endl is used with std!

Nama diperkenalkan dalam menggunakan direktif mematuhi aturan lingkup normal. Nama terlihat dari sudut menggunakan direktif ke akhir lingkup di mana direktif ditemukan. Entitas dengan nama yang sama yang didefinisikan dalam lingkup luar disembunyikan.

Ruang Nama Terpisah

Sebuah namespace dapat didefinisikan dalam beberapa bagian dan namespace terdiri dari jumlah bagian-bagian yang didefinisikan secara terpisah. Bagian terpisah dari namespace dapat tersebar di beberapa file.

Jadi, jika salah satu bagian dari namespace memerlukan nama yang didefinisikan di file lain, nama itu harus tetap dideklarasikan. Menulis definisi namespace berikut baik mendefinisikan namespace baru atau menambahkan elemen baru ke yang sudah ada −

namespace namespace_name {
   // code declarations
}

Ruang Nama Bersarang

Ruang nama dapat disarangkan di mana Anda dapat mendefinisikan satu ruang nama di dalam ruang nama lain sebagai berikut −

namespace namespace_name1 {
   // code declarations
   namespace namespace_name2 {
      // code declarations
   }
}

Anda dapat mengakses anggota ruang nama bersarang dengan menggunakan operator resolusi sebagai berikut −

// to access members of namespace_name2
using namespace namespace_name1::namespace_name2;

// to access members of namespace:name1
using namespace namespace_name1;

Dalam pernyataan di atas jika Anda menggunakan namespace_name1, maka elemen namespace_name2 akan tersedia dalam cakupan sebagai berikut −

Demo Langsung
#include <iostream>
using namespace std;

// first name space
namespace first_space {
   void func() {
      cout << "Inside first_space" << endl;
   }
   
   // second name space
   namespace second_space {
      void func() {
         cout << "Inside second_space" << endl;
      }
   }
}

using namespace first_space::second_space;
int main () {
   // This calls function from second name space.
   func();
   
   return 0;
}

Jika kita mengkompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil sebagai berikut

Inside second_space

Bahasa C

  1. Operator C++
  2. Komentar C++
  3. Template Kelas C++
  4. Ikhtisar C++
  5. Konstanta/Literal C++
  6. Operator di C++
  7. Angka dalam C++
  8. Referensi C++
  9. Ruang nama di C++
  10. Template C++