C++ Namespaces

در C++، Namespace یک مکانیزم برای گروه‌بندی نام‌ها (توابع، کلاس‌ها، متغیرها) است تا از تضاد نام‌ها (Name Conflicts) جلوگیری شود.
Namespace به خصوص در برنامه‌های بزرگ و استفاده از کتابخانه‌های مختلف کاربرد دارد.

🔹 1️⃣ تعریف و استفاده از Namespace

#include <iostream> using namespace std; namespace MyNamespace { int value = 10; void display() { cout << "Value: " << value << endl; } } int main() { MyNamespace::display(); // فراخوانی تابع با نام فضای نام cout << "Value: " << MyNamespace::value << endl; return 0; }

📌 خروجی:

Value: 10 Value: 10

MyNamespace:: مشخص می‌کند که تابع یا متغیر از کدام Namespace است.

🔹 2️⃣ استفاده از using namespace

using namespace MyNamespace; int main() { display(); // بدون نیاز به MyNamespace:: cout << value; // بدون نیاز به MyNamespace:: return 0; }

توجه: استفاده از using namespace در پروژه‌های بزرگ ممکن است باعث تداخل نام‌ها شود.

🔹 3️⃣ Namespace تو در تو (Nested Namespace)

namespace A { namespace B { void hello() { std::cout << "Hello from A::B" << std::endl; } } } int main() { A::B::hello(); return 0; }

📌 خروجی:

Hello from A::B

🔹 4️⃣ Namespace استاندارد (std)

  • کتابخانه‌های استاندارد C++ در Namespace به نام std قرار دارند.

#include <iostream> #include <vector> using namespace std; int main() { vector<int> v = {1, 2, 3}; cout << v[0] << endl; return 0; }

std::cout, std::vector و … همه داخل Namespace std هستند.

🔹 5️⃣ نکات کلیدی

  • Namespace برای جلوگیری از تداخل نام‌ها ضروری است.

  • می‌توان از Namespace تو در تو استفاده کرد.

  • بهتر است در پروژه‌های بزرگ به جای using namespace std; از std:: استفاده شود تا تضاد نام‌ها رخ ندهد.

  • Namespace فقط نام‌ها را گروه‌بندی می‌کند و تاثیری روی کارایی برنامه ندارد.

💡 خلاصه:
Namespace در C++ برای سازماندهی کد و جلوگیری از تداخل نام‌ها استفاده می‌شود. با استفاده از Namespace می‌توان کلاس‌ها، توابع و متغیرها را به گروه‌های مختلف تقسیم کرد و در برنامه‌های بزرگ، خوانایی و امنیت نام‌ها را حفظ نمود.