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

Menguasai Namespace C++: Hindari Konflik Fungsi

Pertimbangkan situasi, ketika kita memiliki dua orang dengan nama yang sama, Zara, di kelas yang sama. Kapan pun kita perlu membedakan mereka pasti kita akan harus menggunakan informasi tambahan bersama dengan nama mereka, seperti area, jika mereka tinggal di area yang berbeda atau nama ibunya atau ayahnya, dll.

Situasi yang sama dapat timbul dalam aplikasi C++ Anda. Contohnya, Anda mungkin sedang menulis beberapa kode yang memiliki fungsi yang disebut xyz() dan ada perpustakaan lain yang juga memiliki fungsi xyz() yang sama. Sekarang compiler tidak memiliki cara untuk mengetahui versi fungsi xyz() mana yang Anda maksud dalam kode Anda.

Sebuah namespace dirancang untuk mengatasi kesulitan ini dan digunakan sebagai informasi tambahan untuk membedakan fungsi, kelas, variabel dll. yang memiliki nama yang sama yang tersedia di perpustakaan yang berbeda. Dengan namespace, Anda dapat menentukan konteks di mana nama-nama didefinisikan. Pada intinya, sebuah namespace mendefinisikan cakupan.

Mendefinisikan Sebuah Namespace

Definisi namespace dimulai dengan kata kunci namespace diikuti oleh nama namespace sebagai berikut minus–

 namespace nama_namespace { // deklarasi kode } 

Untuk memanggil versi yang diaktifkan namespace dari fungsi atau variabel, tambahkan (::) nama namespace sebagai berikut minus–

 nama::kode; // kode dapat berupa variabel atau fungsi. 

Mari kita lihat bagaimana namespace mencakup entitas termasuk variabel dan fungsi minus–

Live Demo
 #include <iostream> using namespace std; // namespace pertama namespace first_space { void func() { cout << "Di dalam first_space" << endl; } } // namespace kedua namespace second_space { void func() { cout << "Di dalam second_space" << endl; } } int main () { // Memanggil fungsi dari namespace pertama. first_space::func(); // Memanggil fungsi dari namespace kedua. second_space::func(); return 0; } 

Jika kita mengompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil berikut minus–

 Di dalam first_space Di dalam second_space 

Direktif using

Anda juga dapat menghindari penambahan namespace dengan direktif using namespace. Direktif ini memberi tahu compiler bahwa kode berikutnya menggunakan nama-nama dalam namespace yang ditentukan. Namespace ini oleh karena itu disiratkan untuk kode berikutnya minus–

Live Demo
 #include <iostream> using namespace std; // namespace pertama namespace first_space { void func() { cout << "Di dalam first_space" << endl; } } // namespace kedua namespace second_space { void func() { cout << "Di dalam second_space" << endl; } } using namespace first_space; int main () { // Ini memanggil fungsi dari namespace pertama. func(); return 0; } 

Jika kita mengompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil berikut minus–

 Di dalam first_space 

Direktif ‘using’ juga dapat digunakan untuk merujuk ke item tertentu dalam namespace. Contohnya, jika satu-satunya bagian dari namespace std yang Anda bermaksud gunakan adalah cout, Anda dapat merujuknya sebagai berikut minus–

 using std::cout; 

Kode berikutnya dapat merujuk ke cout tanpa menambahkan namespace, tetapi item lain dalam std namespace masih perlu ditentukan secara eksplisit sebagai berikut minus–

Live Demo
 #include <iostream> using std::cout; int main () { cout << "std::endl digunakan dengan std!" << std::endl; return 0; } 

Jika kita mengompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil berikut minus–

 std::endl digunakan dengan std! 

Nama yang diperkenalkan dalam direktif using mematuhi aturan cakupan normal. Nama terlihat dari titik direktif using hingga akhir cakupan tempat direktif ditemukan. Entitas dengan nama yang sama yang didefinisikan dalam cakupan luar disembunyikan.

Namespace Tidak Berurutan

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

Jadi, jika satu bagian dari namespace memerlukan nama yang didefinisikan dalam file lain, nama tersebut tetap harus dideklarasikan. Menulis definisi namespace berikut baik mendefinisikan namespace baru atau menambahkan elemen baru ke yang sudah ada minus–

 namespace nama_namespace { // deklarasi kode } 

Namespace Bersarang

Namespace dapat bersarang di mana Anda dapat mendefinisikan satu namespace di dalam namespace lain sebagai berikut minus–

 namespace nama_namespace1 { // deklarasi kode namespace nama_namespace2 { // deklarasi kode } } 

Anda dapat mengakses anggota namespace bersarang dengan menggunakan operator resolusi sebagai berikut minus–

 // untuk mengakses anggota namespace_name2 using namespace nama_namespace1::nama_namespace2; // untuk mengakses anggota namespace:name1 using namespace nama_namespace1; 

Dalam pernyataan di atas jika Anda menggunakan namespace_name1, maka itu akan membuat elemen namespace_name2 tersedia dalam cakupan sebagai berikut minus–

Live Demo
 #include <iostream> using namespace std; // namespace pertama namespace first_space { void func() { cout << "Di dalam first_space" << endl; } // namespace kedua namespace second_space { void func() { cout << "Di dalam second_space" << endl; } } } using namespace first_space::second_space; int main () { // Ini memanggil fungsi dari namespace kedua. func(); return 0; } 

Jika kita mengompilasi dan menjalankan kode di atas, ini akan menghasilkan hasil berikut minus–

 Di dalam second_space 

Bahasa C

  1. Menguasai Operator C++: Panduan Lengkap dengan Contoh Praktis
  2. Komentar C++: Praktik Terbaik untuk Kode yang Mudah Dibaca dan Dipelihara
  3. Menguasai Template Kelas C++: Panduan Praktis
  4. Bahasa Pemrograman C++: Tinjauan & Fitur Utama
  5. Konstanta & Literal C++ Dijelaskan: Tipe, Sintaks, dan Praktik Terbaik
  6. Panduan Lengkap Operator C++: Tipe, Penggunaan, dan Praktik Terbaik
  7. Menguasai Tipe Numerik C++: Panduan Praktis
  8. Memahami Referensi C++: Konsep Utama & Perbedaan dengan Pointer
  9. Menguasai Namespace C++: Hindari Konflik Fungsi
  10. Menguasai Template C++: Panduan Pemrograman Generik