Semua yang Perlu Anda Ketahui tentang Namespace di C ++



Artikel ini akan memberi Anda pengetahuan rinci dan komprehensif tentang Namespace di C ++. Ini berbagai jenis dan Kegunaan dalam Program apa pun.

Namespace di C ++ digunakan untuk mengatur kode ke dalam grup logis dan untuk mencegah benturan nama yang dapat terjadi terutama ketika basis kode Anda menyertakan beberapa pustaka. Dalam artikel ini, Petunjuk berikut akan dibahas:

Kebutuhan Namespace

Pertimbangkan sebuah situasi, kami menulis beberapa kode yang memiliki fungsi bernama abc () dan ada library lain yang telah ditentukan yang tersedia yang juga memiliki fungsi yang sama abc (). Sekarang pada saat kompilasi, kompilator tidak memiliki petunjuk versi abc () mana yang kita maksud dalam kode kita.





Namespace di c ++

apa itu contoh di java

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



Semua tipe dan fungsi library standar C ++ dideklarasikan di namespace std atau namespace yang bersarang di dalam std sehingga banyak digunakan di sebagian besar program.

Mendefinisikan Namespace

Untuk mendefinisikan namespace kita mulai dengan namespace kata kunci diikuti dengan nama namespace sebagai berikut:

namespace namespace_name {int a, b // deklarasi kode di mana // a dan b dideklarasikan dalam // namespace_name's scope}

Poin yang perlu diingat saat mendefinisikan Namespace

  • Deklarasi ruang nama hanya muncul di lingkup global.
  • Deklarasi ruang nama tidak memiliki penentu akses.
  • Deklarasi ruang nama dapat ditempatkan di dalam ruang nama lain.
  • Tidak perlu memberi titik koma setelah tanda kurung kurawal tutup dari definisi namespace.
  • Definisi namespace dapat dibagi menjadi beberapa unit.
#include menggunakan namespace std namespace first_function {void func () {cout<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

Keluaran:



Pada contoh di atas untuk mendefinisikan fungsi func () dua kali berbeda, kami menggunakan konsep namespace. Kami mendefinisikan fungsi pertama di bawah namespace first_function danfungsi kedua di bawah fungsi_kedua namespace. Untuk memanggil fungsi ini kita menggunakan operator resolusi lingkup dengan cara berikut - first_function :: func () dan second_function :: func ().

Menggunakan Namespace di C ++

Ada tiga cara untuk menggunakan namespace dalam program ini,

  1. Direktif penggunaan
  2. Deklarasi penggunaan
  3. Operator Resolusi Lingkup (: :)

Direktif penggunaan

Kita dapat menghindari prepending namespace dengan menggunakan direktif namespace. menggunakan kata kunci memungkinkan kami untuk mengimpor seluruh namespace ke dalam program Anda dengan cakupan global. Ini dapat digunakan untuk mengimpor namespace ke namespace lain atau program apa pun sesuai dengan kebutuhan kami.

sinkronisasi utas dalam contoh java

Pertimbangkan file header Namespace_first.h:

namespace Pertama {int a class First_class {int i}}

Menyertakan file header namespace di atas dalam file Namespace_second.h: sertakan “Namespace_first.h”

namespace Kedua {menggunakan namespace First_class obj int y}

Kita mengimpor namespace_First ke namespace_Second, maka kelas First_class sekarang akan tersedia di namespace_Second. Karenanya kita dapat menulis program berikut dalam file terpisah, katakanlah new_file.cpp.

#include 'Namespace_second.h' void test () {using namespace Second // membuat objek kelas First_class First_class obj2}

Karenanya , petunjuk penggunaan membuatnya lebih mudah untuk menggunakan namespace di C ++, di mana pun Anda mau.

Deklarasi penggunaan

Dalam deklarasi menggunakan, kami mengimpor satu nama tertentu pada satu waktu yang hanya tersedia di dalam cakupan saat ini dan dipanggil dengan bantuan resolusi cakupan. CATATAN: Nama yang diimpor dengan menggunakan-deklarasi dapat menimpa nama yang diimpor dengan menggunakan direktif. Ini bisa kita lihat pada contoh di bawah ini.

Mari kita pertimbangkan file header New_File.h:

namespace Pertama {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Sekarang mari buat file program baru dengan nama New_file_2.cpp dengan kode di bawah ini:

apa boneka di devops
#include 'New_file.h' void B () {using namespace First // using directive using Second :: A // using declaration First :: A () // class A () of First namespace A () // memanggil A () dari namespace Kedua}

Operator resolusi lingkup (: :)

Kami dapat secara eksplisit menentukan nama apa pun yang dideklarasikan dalam namespace menggunakan nama namespace dan resolusi cakupan ' :: ' operator dengan pengenal.

namespace New_space {class X {static int i public: void func ()} // deklarasi nama kelas class Y} // Inisialisasi variabel kelas statis int New_space :: X :: i = 23 class New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Namespace yang tidak jelas di C ++

Seperti yang kita ketahui, namespace di C ++ dapat didefinisikan di beberapa bagian sehingga terdiri dari jumlah bagian yang ditentukan secara terpisah. Jadi, jika salah satu bagian dari namespace membutuhkan nama yang ditentukan di file lain, nama itu masih harus dideklarasikan dalam cakupannya. Menulis namespace berikut dengan cara berikut akan mendefinisikan namespace baru atau menambahkan elemen baru ke yang sudah ada:

namespace namespace_name {// code body}

Namespace Bersarang di C ++

Namespaces dapat disarangkan dengan mudah dan kita dapat mendefinisikan satu namespace di dalam namespace lain sebagai berikut:

namespace namespace_name1 {// badan kode namespace_name1 namespace namespace_name2 {// badan kode namamespace_name2}}

Dengan ini, kita sampai pada akhir artikel Namespace di C ++. Saya harap Anda mendapat gambaran tentang apa sebenarnya namespace di C ++ dan apa saja cara berbeda untuk mendefinisikannya. Jika Anda ingin mempelajari lebih lanjut, lihat oleh Edureka, perusahaan pembelajaran online terpercaya. Kursus pelatihan dan sertifikasi Java J2EE dan SOA dari Edureka dirancang untuk melatih Anda untuk konsep inti dan lanjutan Java bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar blog ini dan kami akan menghubungi Anda kembali secepatnya.