لقد قدمنا مساحات الأسماء في المجموعة 1 أدناه.
مساحة الاسم في C++ | المجموعة 1 (مقدمة)
تحديد مساحة الاسم:
يبدأ تعريف مساحة الاسم بمساحة اسم الكلمة الأساسية متبوعة باسم مساحة الاسم كما يلي:
مساحة الاسم namespace_name
{
// إعلانات الكود، أي المتغير (int a;)
الطريقة (إضافة باطلة () ؛)
الفصول الدراسية (طالب الفصل {}؛)
}
يلقي السلسلة كـ int
تجدر الإشارة إلى أنه لا توجد فاصلة منقوطة (؛) بعد قوس الإغلاق.
لاستدعاء الإصدار الممكّن لمساحة الاسم لأي من الوظيفة أو المتغير، قم بإضافة اسم مساحة الاسم كما يلي:
namespace_name: :code; يمكن أن يكون الكود // دالة أو فئة متغيرة.
التوجيه باستخدام:
يمكنك أيضًا تجنب إضافة مساحات الأسماء مسبقًا باستخدام توجيه مساحة الاسم. يخبر هذا التوجيه المترجم أن الكود اللاحق يستخدم الأسماء في مساحة الاسم المحددة.
وبالتالي يتم تضمين مساحة الاسم للتعليمة البرمجية التالية:
#include using namespace std; // first name space namespace first_space { void func() { cout << 'Inside first_space' << endl; } } // second name space namespace second_space { void func() { cout << 'Inside second_space' << endl; } } using namespace first_space; int main () { // This calls function from first name space. func(); return 0; }
الأسماء المقدمة في توجيه الاستخدام تخضع لقواعد النطاق العادية. يكون الاسم مرئيًا من نقطة توجيه الاستخدام إلى نهاية النطاق الذي يوجد فيه التوجيه. يتم إخفاء الكيانات التي لها نفس الاسم المحدد في النطاق الخارجي.
ما هو ماي سبيس
مساحات الأسماء المتداخلة:
يمكن أن تتداخل مساحات الأسماء حيث يمكنك تعريف مساحة اسم واحدة داخل مساحة اسم أخرى كما يلي:
SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } } يمكنك الوصول إلى أعضاء مساحة الاسم المتداخلة باستخدام عوامل تشغيل الدقة كما يلي:
// للوصول إلى أعضاء namespace_name2
باستخدام مساحة الاسم namespace_name1::namespace_name2;
// للوصول إلى أعضاء مساحة الاسم:name1
باستخدام مساحة الاسم namespace_name1؛
في العبارات المذكورة أعلاه، إذا كنت تستخدم namespace_name1، فستجعل عناصر namespace_name2 متاحة في النطاق كما يلي:
مفتاح مرشحC++
#include using namespace std; // first name space namespace first_space { void func() { cout << 'Inside first_space' << endl; } // second name space namespace second_space { void func() { cout << 'Inside second_space' << endl; } } } using namespace first_space::second_space; int main () { // This calls function from second name space. func(); return 0; }
من الممكن أيضًا إنشاء أكثر من مساحة اسم واحدة في المساحة العامة. يمكن القيام بذلك بطريقتين.
-
الإخراج:
-
الإخراج:
- وهي قابلة للاستخدام مباشرة في نفس البرنامج وتستخدم للإعلان عن المعرفات الفريدة.
- في مساحات الأسماء غير المسماة، لم يتم ذكر اسم مساحة الاسم في إعلان مساحة الاسم.
- يتم إنشاء اسم مساحة الاسم بشكل فريد بواسطة المترجم.
- لن يكون من الممكن الوصول إلى مساحات الأسماء غير المسماة التي قمت بإنشائها إلا داخل الملف الذي قمت بإنشائها فيه.
- مساحات الأسماء غير المسماة هي بديل للإعلان الثابت للمتغيرات.
CPP
// A C++ program to show more than one namespaces // with different names. #include using namespace std; // first name space namespace first { int func() { return 5; } } // second name space namespace second { int func() { return 10; } } int main() { // member function of namespace // accessed using scope resolution operator cout << first::func() <<"n"; cout << second::func() <<"n"; return 0; }
5 10
من الممكن أيضًا إنشاء كتلتين لمساحة الاسم لهما نفس الاسم. كتلة مساحة الاسم الثانية ليست سوى استمرار لمساحة الاسم الأولى. بكلمات أبسط يمكننا أن نقول أن كلا من مساحات الأسماء ليست مختلفة ولكن في الواقع هي نفسها التي يتم تعريفها في أجزاء.
CPP
// C++ program to demonstrate namespace extension #include using namespace std; // first name space namespace first { int val1 = 500; } // rest part of the first namespace namespace first { int val2 = 501; } int main() { cout << first::val1 <<"n"; cout << first::val2 <<"n"; return 0; }
500 501
مساحات الأسماء غير المسماة
أتوي ج
// C++ program to demonstrate working of unnamed // namespaces #include using namespace std; // unnamed namespace declaration namespace { int rel = 300; } int main() { cout << rel << "n"; // prints 300 return 0; }
الإخراج:
300