ההבדל בין בנאי ומשמיד

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 1 אַפּרִיל 2021
תאריך עדכון: 13 מאי 2024
Anonim
Are You a Builder or a Destroyer? | Uzziah Israel
וִידֵאוֹ: Are You a Builder or a Destroyer? | Uzziah Israel

תוֹכֶן


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

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

בואו נסקור את ההבדלים המהותיים בין בנאי להרוס בעזרת תרשים השוואה

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה:

בסיס להשוואהבנאיהרס
מטרה

זה מקצה את הזיכרון לאובייקט.זה ממקם מחדש את הזיכרון של אובייקט.
הצהרה שם class_ (ארגומנטים אם יש) {};~ class_name (ללא טיעונים) {};
ויכוחים הקבלן מקבל ויכוח הרס לא מקבל שום טענה.
מתקשרבנאי נקרא אוטומטית, בעוד האובייקט נוצר.המשחת נקראת אוטומטית, מכיוון שהבלוק יוצא או התוכנית מסתיימת.
עובדבנאי מאפשר לאובייקט לאתחל חלק מערכו לפני כן, הוא משמש.הרס מאפשר לאובייקט לבצע קוד כלשהו בזמן השמדתו.
צו ביצוע

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


הגדרה של בנאי:

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

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

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

סוגי מבנים

ישנם בעיקרון שלושה סוגים של קונסטרקטורים - ברגי ברירת מחדל, פרמטרים והעתקה.

  • קונסטרוקטור ברירת מחדל: זהו קונסטרוקטור בו לא ניתן נימוק לבנאי. לבנאי ברירת המחדל אין פרמטר, אך ניתן לעבור את הערכים למבנה ברירת המחדל כברירת מחדל (באופן דינמי).
  • בנאי פרמטרי: סוג זה של בנאי נוקט בטיעונים; אנו יכולים להעביר ערכים שונים לחברי הנתונים כוויכוחים.
  • העתק בנאי: בנאי העתקה שונה מסוגים אחרים של בנאים מכיוון שהוא מקבל את הכתובת של האובייקט האחר כטיעון.

יישום בנאי:

כיתה קונסט {int a, b; ציבורי: קונסט () // קונסטרוקטור ללא פרמטר {a = 0; b = 0; } קונסט (int c, int d) {// קונסטרוקטור עם פרמטר a = c; c = d; }}; int main () {Const C1; C2 (10,20); // הצהרה זו קוראת לבנאי}

כאשר נוצר C1 יבוצע בנאי ללא פרמטר, שכן C1 לא עובר אף פרמטר. ואילו כאשר C2 נוצר בנאי עם פרמטר יוצא להורג, מכיוון שהוא מעביר שני מספרים שלמים לבנאי.


הגדרה של הרס:

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

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

יישום המשמיד:

כיתה קונסט {int a, b; ציבורי: קונסט (int c, int d) // קונסטרוקטור עם פרמטר. {א = ג; c = d; cout << "ערך a ו- b הם" <<>

כאשר נוצר אובייקט C1, בנאי עם שני פרמטרים מסוג מספר שלם מופעל והחבר "a, b" מקבל אתחול וערך "a, b" נערך. לאחר ההרס הזה יופעל ו"האובייקט C1 נהרס ".

צורך בהרס

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

  1. המטרה העיקרית של קונסטרוקטור היא להקצות זיכרון לאובייקטים כאשר הם נוצרים. לעומת זאת, מטרתו העיקרית של הרס היא חלוקת זיכרון האובייקט כשהוא נהרס.
  2. לבנאי מותר לקבל את הטיעונים שכן ניתן להשתמש בטיעונים כדי לאתחל את חברי הנתונים בכיתה. מצד שני, הרס לא מקבל שום טיעונים, מכיוון שעבודתו היחידה היא למקם את זיכרון האובייקט.
  3. בנאי נקרא כאשר נוצר אובייקט. לעומת זאת, הרס נקרא כאשר תוכנית מסתיימת או שהתוכנית יוצאת מהבלוק בו נוצר אובייקט.
  4. קונסטרוקטור משמש בדרך כלל לאתחול חברי הנתונים בכיתה, ואילו הורס משמש לאפשר לחפץ לבצע פעולה כלשהי לפני שהוא נהרס.
  5. קונסטרוקטורים מבוצעים בסדר ברצף שמשמעותו שאם יש מעמד נגזר שירש את מחלקת הבסיס ונוצר מושא הכיתה הנגזרת אז הוא יקרא תחילה את הבנאי של מחלקת הבסיס ואז את הבנאי של המחלקה הנגזרת. לעומת זאת, ההרס של המחלקה הנגזרת נקרא תחילה ואז מחלקת הבסיס זה אומר שחרבן מבוצע בסדר הפוך של הבנאי.
  6. בכיתה יכולים להיות בנאים מרובים שמזוהים על ידי טיעוני המספר שהועברו בעוד שהם יכולים להכיל רק הרס אחד.
  7. יש מושג של בנאי העתקה המאפשר לאובייקט לאתחל מאובייקט אחר ואילו להרס אין מושג כזה.
  8. ניתן להעמיס על בוני כדי לבצע פעולות שונות תחת שמו של אותו בנאי. נהפוך הוא, אי אפשר להעמיס על הרסנים.

סיכום:

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