logo

מרחב השמות ב- C ++ | הגדר 3 (גישה, יצירת כותרת, קינון וכינוי)

מרחב השמות ב- C ++ | סט 1 (מבוא) מרחב השמות ב- C ++ | הגדר 2 (הרחבת מרחב השמות ומרחב השמות ללא שם)

numpy linspace

דרכים שונות לגישה למרחב השמות: ב- C ++ יש שתי דרכים לגישה למשתנים ופונקציות של מרחב השמות.



הגדרת מרחב שמות:

הגדרת מרחב השמות מתחילה במרחב השמות של מילות המפתח ואחריו שם מרחב השמות כדלקמן:

namespace  namespace_name   
{
// code declarations i.e. variable  (int a;)
method (void add();)
classes ( class student{};)
}

יש לציין כי אין סמיקולון (;) לאחר הסד הסגירה.
כדי להתקשר לגרסה המאפשרת מרחב שמות של פונקציה או משתנה להכין את שם מרחב השמות באופן הבא:
NAMESPACE_NAME :: קוד;  // קוד יכול להיות פונקציה או מחלקה משתנים.



ההנחיה המשתמשת:

אתה יכול גם להימנע מהכנת מרחבי שמות באמצעות הנחיית מרחב השמות. הנחיה זו אומרת למהדר כי הקוד שלאחר מכן עושה שימוש בשמות במרחב השמות שצוין. 
מרחב השמות משתמע אפוא על הקוד הבא:

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; 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;


בהצהרות לעיל אם אתה משתמש בשמות NAMESPACE_NAME1 אז זה יהפוך אלמנטים של NAMESPACE_NAME2 בהיקף כדלקמן:

סורק Java הבא
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; } 

1. דרך רגילה  

CPP
// C++ program to demonstrate accessing of variables // in normal way i.e. using '::' #include    using 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 #include    using 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; } 

תְפוּקָה:

אלגוריתם k-nn
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 ++ אתה יכול להשתמש בשם כינוי לשם מרחב השמות שלך כדי להקל על השימוש. ניתן להתייחס לשקעי שמות קיימים עם שמות חדשים עם התחביר הבא:

hashmap java
namespace new_name = current_name;  
CPP
#include    namespace 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 ועזור לחנונים אחרים.