לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #6  
ישן 14-10-2006, 16:41
צלמית המשתמש של DrTempi
  DrTempi DrTempi אינו מחובר  
 
חבר מתאריך: 12.03.03
הודעות: 2,176
זה לא מדויק
בתגובה להודעה מספר 4 שנכתבה על ידי or777 שמתחילה ב "אז בעצם מה שאתה אומר...."

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

דוגמאות בהן נעשה שימוש ב-Copy Constructor:
- כאשר אתה יוצר אובייקט חדש ואתה מאתחל אותו עם אובייקט אחר מאותו המחלקה:
קוד PHP:
 string s1 "foobar";
// s1 will be copied into s2 using the copy constructor.
string s2(s1); 


- כאשר אתה מעביר פרמטר by Value ולא by Reference.
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.fresh.co.il/scripts/birthday.php?date=27/04/1986]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 14-10-2006, 21:23
צלמית המשתמש של maxim k
  maxim k maxim k אינו מחובר  
 
חבר מתאריך: 05.08.06
הודעות: 2,860
שלח הודעה דרך MSN אל maxim k
מה שכתבת בכלל לא נכון
בתגובה להודעה מספר 3 שנכתבה על ידי gimel שמתחילה ב "נועד להעתקת מצביעים"

זה נשמע כאילו כשהסבירו לך מה זה לא הקשבת טוב...

copy constructor נקרא רק בשלוש מקרים אם אינ זוכר טוב:
-כשאובייקט מאותחל עם אובייקט אחר...למשל:

קוד PHP:
 obj_type obj=other_obj_of_class_obj_type;
obj_type obj(other_obj_of_class_obj_type); 

-כשפונקציה מחזירה אובייקט:

קוד PHP:
 obj_type f()
{
....
     return(
obj_of_class_obj_type);


-כשפונקציה מקבלת כפרמטר אובייקט:

קוד PHP:
 int f(obj_type obj)
{
...



*בשלושת המקרים מדובר על אובייקטים...לא על מצביעים ולא על .references

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



מה שתיארת בכלל לא קשור ל copy constructor...הוא לא ייקרא עבור הפעולה הזאת...יקרא האופרטור = ...כדי לעשות מה שרצית פשוט עושים:

קוד PHP:
 *x1=*x2
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 21:41

הדף נוצר ב 0.07 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר