1.6 - העתקה והעברת בעלות - תרגול
תרגול - מסלול של בעלות אחת¶
השתמשו במחלקת Number מההרצאה והוסיפו לוג של הקצאה ושחרור. צרו שני אובייקטים עם ערכים שונים, והעבירו את הראשון אל השני באמצעות move assignment.
כתבו לפני ההרצה איזו הקצאה צריכה להשתחרר בזמן ההשמה, איזה אובייקט נשאר ריק ואיזה משאב יימחק בסוף scope. הוסיפו self-move ובדקו שהחוזה שבחרנו נשמר.
בחירת overload¶
הריצו את דוגמת forward_to_consumer. החליפו את std::forward בקריאה ישירה עם value, וחזו איזו פונקציה תיבחר בכל קריאה. לאחר מכן החליפו ב־std::move והסבירו למה ההתנהגות השתנתה גם עבור משתנה בעל שם.
מצב קבוע¶
צרו אובייקט Number קבוע ונסו להעביר אותו לאובייקט חדש. שמרו את הודעת השגיאה והסבירו למה הביטוי std::move אינו מסיר const.
הציעו ממשק חלופי אם באמת נדרש ליצור בעלים עצמאי נוסף בעל אותו ערך. הפתרון צריך ליצור משאב חדש, ולא רק להעתיק את הכתובת.