در 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
و … همه داخل Namespacestd
هستند.
🔹 5️⃣ نکات کلیدی
-
Namespace برای جلوگیری از تداخل نامها ضروری است.
-
میتوان از Namespace تو در تو استفاده کرد.
-
بهتر است در پروژههای بزرگ به جای
using namespace std;
ازstd::
استفاده شود تا تضاد نامها رخ ندهد. -
Namespace فقط نامها را گروهبندی میکند و تاثیری روی کارایی برنامه ندارد.
💡 خلاصه:
Namespace در C++ برای سازماندهی کد و جلوگیری از تداخل نامها استفاده میشود. با استفاده از Namespace میتوان کلاسها، توابع و متغیرها را به گروههای مختلف تقسیم کرد و در برنامههای بزرگ، خوانایی و امنیت نامها را حفظ نمود.