שמוש ב reference ב cpp

desertboy

New member
שמוש ב reference ב cpp

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

annefan

New member
לא

זה נראה לי מתכון לאסון, ולא נראה לי שיש איזשהו רווח.
 

annefan

New member
לא מוחלטת

אבל שיקולים של "קונבנציות", הם לא השיקולים הנכונים. השיקולים הם זמן החיים של האוביקטים (המחזיק והמוחזק), והבעלות עליהם.
 

gmorphus

New member
אני פספסתי משהו...

איך אתה יכול בתור member במחלקה להשתמש בreference...???
 

annefan

New member
תנסה...

הקומפיילר יפיל אותך בכל מיני מקומות... התוכנית תתרסק לך בכל מיני מקומות... יהיו קטעים!
 

selalerer

New member
האם זה חוקי:

class B { public int i; }; class A { private: B &refToB; public: A():refToB(*(new B)){} };​
 

desertboy

New member
לא אמרתי

שיש התעלמות מזמן החיים של אובייקט , אבל מעבר לזה בהנחה שמשתני המחלקה שמוחזקים כ- references חיים כאורך החיים של אותו אובייקט שאליו הם שייכים האם נהוג לעשות זאת ?
 

annefan

New member
ההפך

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

desertboy

New member
בסדר

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

annefan

New member
אני חושש שלא הבנת אותי

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