עבור לתוכן

copy constractor

Featured Replies

פורסם

שלום,

אם משהו יוכל להגיד לי בבקשה את המימוש של copy constractor בשני אופנים:

1. ששייך למחלקה פשוטה

2. כזה שנמצא בprivet (אם הוא נראה אותו דבר כמו הפשוט או אולי יש לו הגדרה שונה.. מימוש בטח אין כלל...)

תודה

פורסם

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

פורסם

copy constructor אמור ליצור אובייקט חדש מתוך אובייקט קיים (כשבדר"כ מדובר בשכפול המידע).

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

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

זאת הסיבה, שאם האובייקט שלך 'מכיל' מידע ע"י מצביע, ה- copy constructor צריך לדאוג לשכפל את המידע הזה ולא להעתיק את המצביע.

אפשר להגדיר copy constructor שהוא private אם לא רוצים שיהיה אפשר ליצור מופעים נוספים של האובייקט (אז בדר"כ אין constructor שהוא public ויוצרים את האובייקט ע"י פונקציה סטטית - זה design pattern שנקרא singleton ומשתמשים בו די הרבה)

ארכיון

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

דיונים חדשים