בונים מסוג C ++

C Class Constructors



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

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







דוגמא 1

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



מספר שלם()

{

איקס=חמישים;

ו=עשרים;

};

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







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

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



$ G++ -או filec filec.ג

./filec

-O משמש לשמירת הפלט בקובץ.

דוגמא 2

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

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

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

מספר שלם( intאיקס,intו)

{

ל=איקס;

ב=ו;

};

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

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

intgetX()

{

לַחֲזוֹרל;

};

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

מספר שלם v(70,55); {משתמע}

מספר שלם v=מספר שלם(10,חֲמֵשׁ עֶשׂרֵה); {מְפוֹרָשׁ}

וכדי להציג את התוצאה, נקרא לפונקציות שנוצרו בתוך הכיתה באמצעות האובייקט. כלומר v.getx ().

שיטת אחזור הרשומות זהה לזו שהוצגה קודם לכן.

דוגמה 3

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

קִיר(קִיר&obj)

{

אורך=obj.אורך;

גוֹבַה=obj.גוֹבַה;

}

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

קריאת הפונקציות של הבונה שהועתק תהיה כזו.

קיר קיר 2=קיר 1;

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

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

דוגמה 4

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

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

// בונה עם שני טיעונים

צוּרָה(intאיקס,intו)

{

ל=איקס;

ב=ו;

};

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

צורה s;

צורה s2(8);

צורה s3(4,2);

הפונקציה שבאמצעותה אנו יכולים להציג את הערך נקראת באמצעות אותו אובייקט שנוצר.

כדי לצפות בפלט, נשתמש באותה שיטת מסוף פקודות על ידי איסוף וביצוע הקוד הקיים בקובץ.

מהפלט, אנו יכולים לראות שהתשובה זהה לכל בנאי.

סיכום

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