כיצד ליישם בונה העתקות ב- C ++?



הבנת בנאים הייתה חידה עבור רבים. מאמר זה יעזור לך למחוק את הרעיון של Copy Constructor In C ++

הֲבָנָה קונסטרוקטורים הייתה חידה עבור רבים. מאמר זה יעזור לך למחוק את הרעיון של Copy Constructor In C ++. המצביעים הבאים יוסקרו במאמר זה,

אז בואו נתחילעם מאמר זה בנושא Copy Constructor ב- C ++





בונה העתקות הוא בנאי שמאתחל את האובייקט של הכיתה באמצעות אובייקט אחר מאותו המחלקה.

תחביר:



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

הנה קוד לדוגמא :

# כלול באמצעות מבחן מחלקה std בכיתה {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {מבחן t1 (7) // קונסטרוקטור רגיל נקרא כאן מבחן t2 = t1 // בונה העתקה נקרא כאן cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

תְפוּקָה:



בונה העתקת פלט ב- C ++ - אדוריקה

הֶסבֵּר

התוכנית לעיל היא הדגמה בסיסית של בונה העתקות. יש לנו מבחן כיתתי, עם חבר נתונים פרטי מסוג int שנקרא x. ואז יש לנו קונסטרוקטור פרמטריאלי, שמקצה 7 למשתנים x. יש לנו בונה העתקות, שמייצר את הערך של t2 עם הערך של t1. נשלחת כתובת t2 המחזיקה בערך t1 ומוקצה ל- x. קיימת פונקציית get המחזירה את הערך של x.

לפונקציה העיקרית יש אובייקט של מבחן הכיתה שנקרא t1. יש ערך המשויך לאובייקט זה, זהו פרמטר. לפונקציה העיקרית יש אובייקט אחר של מבחן הכיתה שנקרא t2. זה מאותחל באמצעות המשתנה t1 ובונה ההעתקות נקרא כאן. לבסוף, פונקציית ה- get נקראת ביחס ל- t1 ו- t2 כדי לקבל את הערך של x.

סוגים

ישנם שני סוגים של בונה ההעתקים.
⦁ בונה העתקות רדודות
⦁ בונה העתקות עמוק

ממשיך הלאה עם מאמר זה על Copy Constructor ב- C ++

בונה עותקים רדוד:

בונה העתקות רדודות הוא בונה העתקות ברירת מחדל.

דוגמא:

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

# כלול באמצעות מבחן מחלקה std בכיתה {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

תְפוּקָה:

הפקודה goto c ++

הֶסבֵּר:

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

ממשיך הלאה עם מאמר זה על Copy Constructor ב- C ++

בונה העתקות עמוק

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

הנה קוד לדוגמא עבור: בונה העתקה עמוקה:

# כלול באמצעות מבחן מחלקה std בכיתה {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {מבחן t1 (7) // קונסטרוקטור רגיל נקרא כאן מבחן t2 = t1 // בונה העתקה נקרא כאן cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

תְפוּקָה:

הֶסבֵּר

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

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

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