C++ nomlar fazolari (namespaces)


ULASHISH

Nomlar fazolari (namespaces)

Nomlar fazosi (namespace) — bir-biriga bog‘liq kodni bitta nom ostida guruhlash usuli. U kodingiz kattalashganda yoki bir nechta manbadan olingan koddan foydalanganingizda nomlar to‘qnashuvining oldini olishga yordam beradi.

Nomlar fazosini papka deb tasavvur qiling: ikki xil papkada x nomli o‘zgaruvchi bo‘lishi mumkin va ular bir-biri bilan to‘qnashmaydi.


Nega nomlar fazolaridan foydalanish kerak?

  • Nomlar to‘qnashuvining oldini olish uchun (ayniqsa katta loyihalarda)
  • Kodni mantiqiy guruhlarga ajratish uchun
  • O‘z kodingizni kutubxonalardagi koddan ajratish uchun

Nomlar fazosiga oddiy misol

Bu yerda MyNamespace nomli nomlar fazosi ichida x nomli o‘zgaruvchini aniqlaymiz:

namespace MyNamespace {   int x = 42; } int main() {   cout << MyNamespace::x;   return 0; }
O‘zingiz sinab ko‘ring »

Nomlar fazosi ichidagi o‘zgaruvchiga murojaat qilish uchun MyNamespace::x dan foydalanamiz.


using namespace kalit so‘zi

Agar o‘zgaruvchiga har safar murojaat qilganda nomlar fazosi nomini yozishni istamasangiz, using kalit so‘zidan foydalanishingiz mumkin:

namespace MyNamespace {   int x = 42; } using namespace MyNamespace; int main() {   cout << x;  // No need to write MyNamespace::x   return 0; }
O‘zingiz sinab ko‘ring »

Biroq ehtiyot bo‘ling: katta dasturlarda using namespace dan foydalanish nomlar to‘qnashuviga sabab bo‘lishi mumkin. Ko‘pincha uning o‘rniga MyNamespace::x kabi to‘liq nomdan foydalangan ma’qul.



std nomlar fazosi

C++ tilida cout, cin va endl kabi elementlar standart kutubxonaga (Standard Library) tegishli.

Ularning barchasi standard so‘zining qisqartmasi bo‘lgan std nomli nomlar fazosining bir qismidir. Demak, odatda std::cout, std::cin va hokazo tarzda yozishingiz kerak.

Kodingizni qisqartirish uchun quyidagini qo‘shishingiz mumkin:

using namespace std;
Bu har safar std:: deb yozmasdan cout, cin va endldan foydalanish imkonini beradi.

using namespace std ishlatilmaganda
#include <iostream> int main() {   std::cout << "Hello World!\n";   return 0; }

cout dan oldin std:: ni yozishingiz shart.

using namespace std ishlatilganda
#include <iostream> using namespace std; int main() {   cout << "Hello World!\n";   return 0; }

Endi std:: ni har safar yozmasdan cout dan foydalanishingiz mumkin.


Undan har doim foydalanish kerakmi?

Kichik dasturlarda va o‘rganish jarayonida namespace std dan foydalanish bemalol mumkin.

Ammo katta loyihalarda har bir elementdan oldin std:: ni yozgan ma’qul. Bu turli kutubxonalarda bir xil nomli funksiyalar yoki o‘zgaruvchilar bo‘lsa, to‘qnashuvlarning oldini oladi.

Qisqasi: using namespace std; yangi boshlovchilar uchun foydali, ammo katta dasturlarda undan ehtiyotkorlik bilan foydalaning.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!