فضای نام ها (Namespaces)
«فضای نام ها (Namespaces)» یعنی پوشه گذاری کد. این کار از تداخل اسم ها جلوگیری می کند. مثل وقتی دو کلاس داری و هرکدام دانش آموزی به نام «x» دارند. با فضای نام، این دو «x» قاطی نمی شوند.
چرا از فضای نام ها استفاده کنیم؟
برای نظم بهتر، جداسازی کدها، و جلوگیری از دعوای اسم ها. مخصوصاً وقتی پروژه بزرگ است یا از چند کتابخانه استفاده می کنی.
نمونه پایه فضای نام
یک متغیر داخل فضای نام می گذاریم و با MyNamespace::x به آن دسترسی می گیریم.
namespace MyNamespace {
int x = 42;
}
int main() {
cout << MyNamespace::x;
return 0;
}
کلیدواژه using namespace
اگر نمی خواهی هر بار نام فضای نام را بنویسی، می توانی از using کمک بگیری.
namespace MyNamespace {
int x = 42;
}
using namespace MyNamespace;
int main() {
cout << x;
return 0;
}
هشدار: در پروژه های بزرگ، using namespace ممکن است تداخل بسازد. پس اغلب نوشتن کامل مانند MyNamespace::x امن تر است.
فضای نام std
کتابخانه استاندارد ++C داخل «std» است. پس معمولاً باید std::cout و std::cin بنویسی.
#include <iostream>
int main() {
std::cout << "Hello World!\n";
return 0;
}
برای کوتاه نویسی، می توانی یک بار using namespace std; بنویسی. سپس cout را مستقیم استفاده کن.
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!\n";
return 0;
}
باید همیشه استفاده کنیم؟
برای تمرین و برنامه های کوچک، اشکالی ندارد. اما در پروژه های بزرگ، نوشتن std:: از تداخل جلوگیری می کند.
جمع بندی سریع
- فضای نام مثل پوشه اسم هاست.
MyNS::nameتداخل را حل می کند.using namespaceکوتاه نویسی می دهد.- برای پروژه بزرگ، مراقب تداخل باش.
stdخانه کتابخانه استاندارد است.
نکته: صفحه الگوریتم ها (Algorithms) و ایتریتورها (Iterators) را هم ببین. همچنین این صفحه فضای نام ها (Namespaces) را بوکمارک کن.