כל מה שצריך לדעת על Namespace ב- C ++



מאמר זה יספק לכם ידע מפורט ומקיף על Namespace ב- C ++. זה סוגים שונים ושימושים בכל תוכנית.

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

הצורך ב- Namespace

שקול מצב, אנו כותבים קוד כלשהו שיש לו פונקציה הנקראת abc () וישנה ספרייה מוגדרת מראש אחרת שיש לה גם אותה פונקציה abc (). כעת בזמן ההידור, למהדר אין מושג לאיזו גרסה של פונקציית abc () אנו מתייחסים בקוד שלנו.





מרחב שמות ב- c ++

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



כל סוגי הספרייות והפונקציות הסטנדרטיים של C ++ מוצהרים במרחב השמות std או במרחבי השמות המקוננים בתוך std ולכן הוא נמצא בשימוש נרחב ברוב התוכניות.

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

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

מרחב שמות שם מרחב {int a, b // הצהרות קוד כאשר // a ו- b מוכרזים בהיקף // namespace_name}

נקודות שיש לזכור בעת הגדרת מרחב שמות

  • הצהרות מרחב שמות מופיעות רק בהיקף גלובלי.
  • להצהרות מרחב שמות אין מפרט גישה.
  • הצהרות מרחב שמות יכולות להיות מקוננות בתוך מרחב שמות אחר.
  • אין צורך לתת נקודה-פסיק לאחר הסוגר הסוגר של הגדרת מרחב השמות.
  • ניתן לפצל את הגדרת מרחב השמות למספר יחידות.
# כלול שימוש במרחב השמות std namespace first_function {void func () {cout<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

תְפוּקָה:



בדוגמה שלעיל כדי להגדיר את פונקציית func () בשתי פעמים שונות, אנו משתמשים במושג מרחב השמות. אנו מגדירים את הפונקציה הראשונה תחת מרחב השמות first_function ו-פונקציה שנייה תחת מרחב השמות. כדי לקרוא לפונקציות אלה אנו משתמשים באופרטור רזולוציית היקף באופן הבא - first_function :: func () ו- second_function :: func ().

שימוש ב- Namespace ב- C ++

ישנן שלוש דרכים להשתמש במרחב שמות בתוכנית,

  1. הוראות השימוש
  2. הצהרת השימוש
  3. מפעיל רזולוציית היקף (: :)

הוראות השימוש

אנו יכולים להימנע מקדימה של מרחבי שמות באמצעות ה- באמצעות הוראת מרחב שמות. באמצעות מילת המפתח מאפשרת לנו לייבא מרחב שמות שלם לתוכנית שלך עם היקף גלובלי. ניתן להשתמש בו לייבוא ​​מרחב שמות למרחב שמות אחר או לכל תוכנית בהתאם לדרישתנו.

שקול קובץ כותרת Namespace_first.h:

מרחב שמות ראשון {int בכיתה First_class {int i}}

כולל קובץ כותרת מרחב השמות לעיל בקובץ Namespace_second.h: כולל את 'Namespace_first.h'

מרחב שמות שני {באמצעות מרחב שמות First_class obj int y}

אנו מייבאים את spacepace_First ל- namespace_Second, ולכן המחלקה First_class תהיה זמינה כעת ב- namespace_Second. מכאן שנוכל לכתוב את התוכנית הבאה בקובץ נפרד, נניח new_file.cpp.

#include 'Namespace_second.h' מבחן חלל () {באמצעות מרחב names Second // יצירת אובייקט מהמחלקה First_class First_class obj2}

לָכֵן , הוראות השימוש מקלות על השימוש במרחב שמות ב- C ++, בכל מקום שתרצה.

הצהרת השימוש

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

הבה נבחן קובץ כותרת New_File.h:

מרחב השמות הראשון {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

עכשיו בואו ניצור קובץ תוכנית חדש בשם New_file_2.cpp עם הקוד למטה:

# כלול 'New_file.h' ריק B () {באמצעות מרחב השמות First // באמצעות הנחיה באמצעות Second :: A // באמצעות הצהרה First :: A () // class A () של מרחב השמות First A () // קורא A () של מרחב השמות השני}

מפעיל רזולוציית היקף (: :)

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

תוכנית java להתחברות למסד הנתונים mysql
מרחב שמות New_space {class X {static int i public: void func ()} // class class declaration class Y} // אתחול משתנה של מחלקה סטטית int New_space :: X :: i = 23 class New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

מרחב שמות לא צמוד ב- C ++

כידוע ניתן להגדיר מרחב שמות ב- ++ C בכמה חלקים ולכן הוא מורכב מסכום החלקים המוגדרים בנפרד. לכן, אם חלק אחד ממרחב השמות דורש שם המוגדר בקובץ אחר, עדיין יש להכריז על שם זה בהיקפו. כתיבת מרחב השמות הבא באופן הבא מגדירה מרחב שמות חדש או מוסיפה אלמנטים חדשים למרחב קיים:

מרחב שמות שמות_שם {// קוד גוף}

מרחב שמות מקונן ב- C ++

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

מרחב שמות מרחב שם 1 {// קוד גוף של מרחב שמות 1 מרחב שמות שמות שם 2 {// גוף קוד מקונן שם מרחב_שם 2}}

עם זאת, אנו מגיעים לסוף המאמר Namespace ב- C ++. אני מקווה שקיבלתם מושג מהו בעצם מרחב שמות ב- C ++ ומהן הדרכים השונות להגדירו. אם ברצונך ללמוד עוד, עיין ב מאת אדוריקה, חברת למידה מקוונת אמינה. קורס ההכשרה וההסמכה של Java J2EE ו- SOA של אדוריקה נועד להכשיר אותך למושגי ליבה מרכזיים ומתקדמים יחד עם מסגרות Java שונות כמו Hibernate & Spring.

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