מרחב השמות ב- C ++ | הגדר 3 (גישה, יצירת כותרת, קינון וכינוי)
מרחב השמות ב- C ++ | סט 1 (מבוא) מרחב השמות ב- C ++ | הגדר 2 (הרחבת מרחב השמות ומרחב השמות ללא שם)
דרכים שונות לגישה למרחב השמות: ב- C ++ יש שתי דרכים לגישה למשתנים ופונקציות של מרחב השמות.
הגדרת מרחב שמות:
הגדרת מרחב השמות מתחילה במרחב השמות של מילות המפתח ואחריו שם מרחב השמות כדלקמן:
namespace namespace_name
{
// code declarations i.e. variable (int a;)
method (void add();)
classes ( class student{};)
}יש לציין כי אין סמיקולון (;) לאחר הסד הסגירה.
כדי להתקשר לגרסה המאפשרת מרחב שמות של פונקציה או משתנה להכין את שם מרחב השמות באופן הבא:
NAMESPACE_NAME :: קוד; // קוד יכול להיות פונקציה או מחלקה משתנים.ההנחיה המשתמשת:
אתה יכול גם להימנע מהכנת מרחבי שמות באמצעות הנחיית מרחב השמות. הנחיה זו אומרת למהדר כי הקוד שלאחר מכן עושה שימוש בשמות במרחב השמות שצוין.
C++
מרחב השמות משתמע אפוא על הקוד הבא:#includeusing 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 ; } שמות שהוצגו בהנחיה ציית לכללי היקף רגילים. השם נראה מנקודת ההנחיה השימוש עד סוף ההיקף בו נמצאת ההנחיה. ישויות עם אותו שם המוגדר בהיקף חיצוני מוסתרות.
מרחבי שמות מקוננים:
ניתן לקנן מרחבי שמות במקום בו תוכלו להגדיר מרחב שמות אחד בתוך חלל שם אחר כדלקמן:
namespace namespace_name1
{
// code declarations
namespace namespace_name2
{
// code declarations
}
}אתה יכול לגשת לחברי מרחב השמות המקונן על ידי שימוש במפעילי רזולוציה כדלקמן:
// כדי לגשת לחברים ב- NameSpace_name2
באמצעות מרחב השמות NAMESPACE_NAME1 :: NAMESPACE_NAME2;
// כדי לגשת לחברי מרחב השמות: name1
באמצעות מרחב שמות NAMESPACE_NAME1;C++
בהצהרות לעיל אם אתה משתמש בשמות NAMESPACE_NAME1 אז זה יהפוך אלמנטים של NAMESPACE_NAME2 בהיקף כדלקמן:#includeusing 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 ; } 1. דרך רגילה
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using '::' #includeusing namespace std ; namespace geek { int rel = 300 ; } int main () { // variable ‘rel’ accessed // using scope resolution operator cout & lt ; & lt ; geek :: rel & lt ; & lt ; & quot ; n & quot ;; // prints 300 return 0 ; } פלט:
300
2. 'שימוש בהנחיה
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using 'using' directive #includeusing namespace std ; namespace geek { int rel = 300 ; } // use of ‘using’ directive using namespace geek ; int main () { // variable ‘rel’ accessed // without using scope resolution variable cout & lt ; & lt ; rel & lt ; & lt ; & quot ; n & quot ;; //prints 300 return 0 ; } תְפוּקָה:
300
באמצעות מרחב שמות בקבצי כותרת אנו יכולים ליצור מרחב שמות בקובץ אחד ולגשת לתוכן באמצעות תוכנית אחרת. זה נעשה באופן הבא.
- עלינו ליצור שני קבצים. אחד המכיל את מרחב השמות ואת כל חברי הנתונים ופונקציות החברים שאנו רוצים להשתמש בהם בהמשך.
- והתוכנית האחרת יכולה להתקשר ישירות לתוכנית הראשונה שתשתמש בכל חברי הנתונים ובפונקציות החברים בה.
קובץ 1
CPP // file1.h namespace foo { int value () { return 5 ; } }
קובץ 2
CPP // file2.cpp - Not to be executed online #include #include file1.h // Including file1 using namespace std ; int main () { cout & lt ; & lt ; foo :: value (); return 0 ; }
כאן אנו יכולים לראות כי מרחב השמות נוצר ב- File1.H והערך () של מרחב השמות הזה נקרא ב- File2.CPP. מרחבי שמות מקוננים ניתן לקנן גם מרחבי שמות C ++, כלומר מרחב שמות אחד בתוך השני. הרזולוציה של משתני מרחב השמות היא היררכית.
CPP // C++ program to demonstrate nesting of namespaces #include using namespace std ; // Nested namespace namespace out { int val = 5 ; namespace in { int val2 = val ; } } // Driver code int main () { cout & lt ; & lt ; out :: in :: val2 ; // prints 5 return 0 ; }
פלט:
5
כינוי מרחב השמות: ב- C ++ אתה יכול להשתמש בשם כינוי לשם מרחב השמות שלך כדי להקל על השימוש. ניתן להתייחס לשקעי שמות קיימים עם שמות חדשים עם התחביר הבא:
namespace new_name = current_name;
CPP#includenamespace name1 { namespace name2 { namespace name3 { int var = 42 ; } } } // Aliasing namespace alias = name1 :: name2 :: name3 ; int main () { std :: cout & lt ; & lt ; alias :: var & lt ; & lt ; 'n' ; } פלט:
42
אם אתה אוהב geeksforgeeks ואתה רוצה לתרום אתה יכול גם לכתוב מאמר באמצעות write.geeksforgeeks.org או שלחו את המאמר שלך ל- [email protected]. עיין במאמר שלך המופיע בדף הראשי של GeeksForgeeks ועזור לחנונים אחרים.