Namespace di C ++ digunakan untuk menyusun kod ke dalam kumpulan logik dan untuk mencegah pelanggaran nama yang boleh berlaku terutama ketika pangkalan kode anda merangkumi banyak perpustakaan. Dalam artikel ini Petunjuk berikut akan dibahas:
- Keperluan untuk Namespace
- Mendefinisikan ruang nama dalam C ++
- Perkara yang perlu diingat semasa menentukan Namespace
- Menggunakan Namespace di C ++
- Ruang Nama Tidak Selaras
- Ruang Nama Bersarang
Keperluan untuk Namespace
Pertimbangkan situasi, kita sedang menulis beberapa kod yang mempunyai fungsi yang disebut abc () dan ada perpustakaan lain yang telah ditentukan yang juga mempunyai fungsi yang sama abc (). Sekarang pada masa penyusunan, pengkompil tidak tahu versi fungsi abc () yang kita rujuk dalam kod kita.
Untuk mengatasi kesukaran ini ruang nama dirancang dan digunakan sebagai maklumat tambahan untuk membezakan fungsi, pemboleh ubah, kelas, dan lain-lain yang serupa dengan nama yang sama yang terdapat di perpustakaan yang berbeza. Dengan menggunakan ruang nama, kita dapat menentukan konteks di mana nama ditentukan. Pada hakikatnya, ruang nama menentukan skop.
cara menetapkan jalan java
Semua jenis dan fungsi pustaka standard C ++ dinyatakan di ruang nama std atau ruang nama yang bersarang di dalam std sehingga digunakan secara meluas dalam kebanyakan program.
Mendefinisikan Ruang Nama
Untuk menentukan ruang nama kita mulakan dengan ruang nama kata kunci diikuti dengan nama ruang nama seperti berikut:
namespace namespace_name {int a, b // kod deklarasi di mana // a dan b diisytiharkan dalam // namespace_name's lingkup}
Perkara yang perlu diingat semasa menentukan ruang nama
- Pengisytiharan ruang nama hanya muncul di ruang lingkup global.
- Pengisytiharan ruang nama tidak mempunyai penentu akses.
- Pengisytiharan ruang nama boleh disarang di ruang nama yang lain.
- Tidak perlu memberikan titik koma setelah penanda definisi ruang nama.
- Definisi ruang nama boleh dibahagi kepada beberapa unit.
#sertakan dengan 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 }
Pengeluaran:
Dalam contoh di atas untuk menentukan fungsi func () dua kali berbeza, kami menggunakan konsep namespace. Kami menentukan fungsi pertama di bawah namespace first_function danfungsi kedua di bawah namespace second_fungsi. Untuk memanggil fungsi ini, kami menggunakan operator resolusi skop dengan cara berikut - first_function :: func () dan second_function :: func ().
Menggunakan Namespace di C ++
Terdapat tiga cara untuk menggunakan ruang nama dalam program ini,
- Arahan penggunaan
- Pengisytiharan penggunaan
- Pengendali Resolusi Skop (: :)
Arahan penggunaan
Kita boleh mengelakkan penyediaan ruang nama dengan menggunakan arahan ruang nama. menggunakan kata kunci membolehkan kami mengimport keseluruhan ruang nama ke dalam program anda dengan skop global. Ia dapat digunakan untuk mengimport ruang nama ke ruang nama lain atau program apa pun sesuai dengan kehendak kami.
Pertimbangkan fail tajuk Namespace_first.h:
namespace First {int a class First_class {int i}}}
Termasuk fail tajuk ruang nama di atas dalam fail Namespace_second.h: sertakan 'Namespace_first.h'
corak reka bentuk dalam php dengan contoh
namespace Second {menggunakan namespace First First_class obj int y}
Kami mengimport namespace_First ke namespace_Second, oleh itu kelas First_class kini akan tersedia di namespace_Second. Oleh itu kita dapat menulis program berikut dalam fail yang berasingan, katakan new_file.cpp.
#masuk ujian kekosongan 'Namespace_second.h' () {menggunakan ruang nama Kedua // membuat objek kelas First_class First_class obj2}
Oleh itu , arahan penggunaan menjadikannya lebih mudah untuk menggunakan ruang nama di C ++, di mana sahaja anda mahu.
Pengisytiharan penggunaan
Dalam deklarasi penggunaan, kami mengimport satu nama tertentu pada satu masa yang hanya tersedia dalam ruang lingkup semasa dan dipanggil dengan bantuan resolusi skop. CATATAN: Nama yang diimport dengan deklarasi penggunaan dapat menggantikan nama yang diimport dengan arahan penggunaan. Kita dapat melihatnya dalam contoh di bawah.
Mari kita pertimbangkan fail header New_File.h:
namespace Pertama {kekosongan A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }
Sekarang mari kita buat fail program baru dengan nama New_file_2.cpp dengan kod di bawah:
#include 'New_file.h' batal B () {menggunakan ruang nama Pertama // menggunakan arahan menggunakan Kedua :: A // menggunakan deklarasi Pertama :: A () // kelas A () ruang nama Pertama A () // memanggil A () ruang nama Kedua}
Pengendali resolusi skop (: :)
Kami secara eksplisit dapat menentukan nama yang dinyatakan dalam ruang nama menggunakan nama ruang nama dan resolusi ruang lingkup ' :: ' pengendali dengan pengecam.
apa itu sqoop dalam hadoop
namespace New_space {class X {static int i public: void func ()} // class name deklarasi Y} // Memulakan pemboleh ubah kelas statik 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 }
Ruang Nama Tidak Selaras dalam C ++
Seperti yang kita ketahui ruang nama dalam C ++ dapat didefinisikan dalam beberapa bahagian sehingga terdiri dari jumlah bahagiannya yang ditentukan secara terpisah. Oleh itu, jika satu bahagian ruang nama memerlukan nama yang ditentukan dalam fail lain, nama itu mesti tetap dinyatakan dalam skopnya. Menulis ruang nama berikut dengan cara berikut sama ada menentukan ruang nama baru atau menambahkan elemen baru ke elemen yang ada:
namespace namespace_name {// kod badan}
Ruang Names Bersarang di C ++
Ruang nama dapat disarang dengan mudah dan kita dapat menentukan satu ruang nama di dalam ruang nama yang lain seperti berikut:
namespace namespace_name1 {// badan kod namespace_name1 namespace namespace_name2 {// kod badan bersarang namamespace_name2}}
Dengan ini, kita akan mengakhiri artikel Namespace dalam C ++. Saya harap anda mendapat idea tentang apa sebenarnya ruang nama di C ++ dan cara berbeza untuk menentukannya. Sekiranya anda ingin mengetahui lebih lanjut, lihat di oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.
Ada soalan untuk kami? Sila sebutkan di bahagian komen blog ini dan kami akan menghubungi anda secepat mungkin.