Nomlar maydoni bu uning ichidagi identifikatorlar (turlar, funktsiyalar, o'zgaruvchilar va boshqalar nomlari) qamrovini ta'minlaydigan deklarativ hudud
11-Variant
Nazariy qism
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 nomlarni aniq kvalifikatsiya sifatida nom maydoni-nomisiznamespace ishlatishga imkon 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.