Namespace (nomlar maydoni)


Download 31.99 Kb.
bet1/4
Sana17.06.2023
Hajmi31.99 Kb.
#1523755
  1   2   3   4

Namespace (nomlar maydoni)
Nomlar maydoni - bu uning ichidagi identifikatorlar (turlar, funktsiyalar, o'zgaruvchilar va boshqalar nomlari) qamrovini ta'minlaydigan deklarativ hudud. Nomlar bo'shliqlari kodni mantiqiy guruhlarga ajratish va ayniqsa kod bazasi bir nechta kutubxonalarni o'z ichiga olgan bo'lsa, yuzaga kelishi mumkin bo'lgan nomlar to'qnashuvining oldini olish uchun ishlatiladi. Nomlar maydoni doirasidagi barcha identifikatorlar malakasiz bir-biriga ko'rinadi. Nom maydonidan tashqaridagi identifikatorlar a'zolarga har bir identifikator uchun to'liq malakali nom yordamida kirishlari mumkin, masalan std::vector vec;, yoki bitta identifikator uchun Deklaratsiyausing std::string ( ) yoki nomlar maydonidagi barcha identifikatorlar uchun foydalanish direktivasiusing namespace std; ( ). Sarlavha fayllaridagi kod har doim to'liq nom maydoni nomidan foydalanishi kerak.
Quyidagi misol nom maydoni deklaratsiyasini va nomlar maydonidan tashqaridagi kod ularning a'zolariga kirishining uchta usulini ko'rsatadi.

namespace ContosoData
{
class ObjectManager
{
public:
void DoSomething() {}
};
void Func(ObjectManager) {}
}

To'liq malakali nomdan foydalaning:




ContosoData::ObjectManager mgr;


mgr.DoSomething();


ContosoData::Func(mgr);

Bitta identifikatorni qamrab olish uchun foydalanish deklaratsiyasidan foydalaning:


using ContosoData::ObjectManager;


ObjectManager mgr;


mgr.DoSomething();

Nomlar maydonidagi hamma narsani qamrab olish uchun foydalanish direktivasidan foydalaning:



using namespace ContosoData;


ObjectManager mgr;


mgr.DoSomething();


Func(mgr);
direktivalardan foydalanish
usingDirektiv a dagi barcha nomlardan aniq kvalifikatsiya sifatida nom maydoni-nomisiznamespace foydalanishga ruxsat beradi. Agar nomlar sohasida bir nechta turli identifikatorlardan foydalanayotgan bo'lsangiz, amalga oshirish faylida (ya'ni *.cpp) foydalanish direktivasidan foydalaning; agar siz faqat bitta yoki ikkita identifikatordan foydalanayotgan bo'lsangiz, unda nomlar maydonidagi barcha identifikatorlarni emas, balki faqat o'sha identifikatorlarni qamrab olish uchun foydalanish deklaratsiyasini ko'rib chiqing. Agar mahalliy o'zgaruvchi nom maydoni o'zgaruvchisi bilan bir xil nomga ega bo'lsa, nom maydoni o'zgaruvchisi yashirin bo'ladi. Global o'zgaruvchi bilan bir xil nomga ega nom maydoni o'zgaruvchisiga ega bo'lish xatodir.

Foydalanish direktivasi .cpp faylining yuqori qismida (fayl doirasida) yoki sinf yoki funksiya taʼrifi ichida joylashtirilishi mumkin.



Umuman olganda, sarlavha fayllariga (*.h) direktivalardan foydalanishdan saqlaning, chunki ushbu sarlavhani o'z ichiga olgan har qanday fayl nomlar maydonidagi hamma narsani qamrab oladi, bu esa nomlarni yashirish va disk raskadrovka qilish juda qiyin bo'lgan nomlarning to'qnashuvi muammolariga olib kelishi mumkin. Sarlavha faylida har doim to'liq malakali nomlardan foydalaning. Agar bu nomlar juda uzun bo'lsa, ularni qisqartirish uchun nom maydoni taxallusidan foydalanishingiz mumkin



Download 31.99 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling