1.9 - מודל מחלקות ופולימורפיזם - תרגול
תרגול - יעד כתיבה שניתן להחליף¶
הרחיבו את ממשק Sink מההרצאה עם CountingSink שסופר כמה bytes נכתבו אליו. הגדירו את המחלקה כך ש־write אינה שומרת string_view מעבר לקריאה.
כתבו פונקציה שמקבלת Sink& וכותבת שתי הודעות. הפעילו אותה על ConsoleSink, על MemorySink ועל CountingSink, בלי לשנות את גוף הפונקציה.
בעלות דרך בסיס¶
החזיקו CountingSink בתוך unique_ptr
התאמת pointer¶
הריצו את דוגמת Both משני בסיסים והדפיסו את הכתובות. אל תניחו offset מספרי מסוים; הסבירו כיצד pointerים שונים יכולים להתייחס לתת־אובייקטים של אותו אובייקט שלם.
חלופה סגורה¶
הציעו מבנה באמצעות variant כאשר קיימים רק שני סוגי יעד קבועים. תארו מה צריך להשתנות בהוספת סוג שלישי והשוו להוספת מחלקה שיורשת Sink. אין צורך לממש ספריית type erasure בתרגיל הזה.