|
Yangi nomlar fazosi uchun joy yaratish
|
bet | 2/7 | Sana | 25.05.2024 | Hajmi | 4,23 Mb. | | #253274 |
Bog'liq 1-mustaqil ish dasturlashYangi nomlar fazosi uchun joy yaratish.
Ma’lumki, programmaga qo‘shilgan sarlavha fayllarida e’lon qilingan identifikator va o‘zgarmaslar kompilyator tomonidan yagona global nomlar fazosiga kiritiladi. Agar programma ko‘p miqdordagi sarlavha fayllami ishlatsa va undagi identifikatorlar (funksiya nomlari va o‘zgaruvchilar nomlari, sinflar nomlari va hakozalar) va o‘zgarmaslar nomlari turli programma tuzuvchilar tomonidan mustaqil ravishda aniqlangan bo4sa, bir xil nomlami ishlatish bilan bog‘liq muammolar yuzaga kelish ehtimoli katta bo4adi. Nomlar fazosi tushunchasini kiritilishi mazkur muammoni ma’lum bir ma’noda hal qilishga yordam beradi. Agar programmada yangi identifikatomi aniqlash kerak bo‘lsa va xuddi shu nomni boshqa modullarda yoki kutubxonalarda ishlatishi xavfi boMadigan boMsa, bu identifikatorlar uchun o‘zining shaxsiy nomlar fazosini aniqlash mumkin. Bunga namespace kalit so‘zidan foydalanilgan holda erishiladi:
namespace
{
// e’lonlar
}
Nomlar fazosi ichida e’lon qilingan identifikatorlar faqat fazosining nomi> ko‘rinish sohasida bo'ladi va yuzaga kelishi mumkin
bo‘lgan kelishmovchiliklaming oldi olinadi.
Misol tariqasida quyidagi nomlar fazosini yarataylik:
namespace Shaxsiy_nomlar
{
int x,y,z;
void Mening_funksiyam(char belgi);
}
Kompilyatorga konkret nomlar fazosidagi nomlami ishlatish kerakligini ko‘rsatish uchun ko‘rinish sohasiga ruxsat berish amalidan foydalanish mumkin:
Shaxsiy_nomlar: x =5;
#include
#include
using namespace std;
int main() {
vector names;
names.push_back("John");
names.push_back("Jane");
names.push_back("Alice");
names.push_back("Bob");
for (auto name : names) {
cout << name << endl;
}
return 0;
}
Bu misolda, std::vector turidan yangi nomlar fazosini saqlash uchun names nomli obyekt yaratilgan. push_back() funksiyasi yordamida, yangi nomlar ro'yxati namesga qo'shilgan. for tsikli yordamida names ichidagi barcha nomlar chiqarilgan.
|
| |