Skip to content

Nomlar makoni (Namespaces)

Nomlar makoni

Nomlar makoni — tegishli kodni bitta nom ostida guruhlash usuli. U kodingiz kengayganda yoki bir nechta manbadan kod ishlatganda nom to'qnashuvlarini oldini olishga yordam beradi.

Nomlar makonini papka sifatida tasavvur qiling: ikkita turli papkada x nomli o'zgaruvchi bo'lishi mumkin va ular to'qnashmaydi.


Nima uchun nomlar makonidan foydalanish kerak?

  • Nom to'qnashuvlarini oldini olish, ayniqsa katta loyihalarda
  • Kodni mantiqiy guruhlarga ajratish
  • O'z kodingizni kutubxona kodidan ajratish

Asosiy misol

Bu yerda MyNamespace nomli nomlar makoni ichida x o'zgaruvchisi e'lon qilingan:

MISOL

cpp
namespace MyNamespace {
  int x = 42;
}

int main() {
  cout << MyNamespace::x;
  return 0;
}

Nomlar makoni ichidagi o'zgaruvchiga kirish uchun MyNamespace::x yoziladi.


using namespace kalit so'zi

Har safar nomlar makoni nomini yozishni xohlamasangiz, using kalit so'zidan foydalanishingiz mumkin:

MISOL

cpp
namespace MyNamespace {
  int x = 42;
}

using namespace MyNamespace;

int main() {
  cout << x;  // MyNamespace::x yozish shart emas
  return 0;
}

EHTIYOT BO'LING

Katta dasturlarda using namespace ishlatish nom to'qnashuvlariga olib kelishi mumkin. Ko'pincha MyNamespace::x kabi to'liq nomni yozish yaxshiroqdir.


std nomlar makoni

C++ da cout, cin va endl kabi narsalar Standart kutubxonaga tegishli.

Bularning barchasi std nomli nomlar makoni ichida, bu standart degan ma'noni anglatadi. Shuning uchun odatda std::cout, std::cin va boshqalarni yozish kerak.

Kodni qisqartirish uchun quyidagini qo'shish mumkin:

MISOL

cpp
using namespace std;

Bu cout, cin va endl ni har safar std:: yozmasdan ishlatish imkonini beradi.

using namespace std ishlatmasdan:

MISOL

cpp
#include <iostream>

int main() {
  std::cout << "Hello World!\n";
  return 0;
}

using namespace std ishlatib:

MISOL

cpp
#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!\n";
  return 0;
}

Har doim ishlatish kerakmi?

Kichik dasturlar va o'rganish uchun using namespace std yozish ma'qul.

Lekin katta loyihalarda har bir element oldidan std:: yozish yaxshiroq. Bu turli kutubxonalarda bir xil nomli funksiyalar yoki o'zgaruvchilar bo'lganda to'qnashuvlarni oldini oladi.

Qisqacha: using namespace std; boshlang'ich dasturchilar uchun qulay, lekin katta dasturlarda ehtiyotkorlik bilan ishlating.