אין לי את הספר, ומוזר לי שזה מופיע
במשהו שסטראוספ כתב, אבל עקרונית אתה יכול להפעיל מתודות עם מצביע לאובייקט שהוא nullptr.
כלומר, להפעיל מטודה גם כשאין לך אובייקט.
עד כמה שהצלחתי למצוא, לפי התקן זו התנהגות לא מוגדרת, אבל רוב הקומפיילרים בנויים כך, שהפעלת המתודה עצמה לא תגרור dereference של המצביע.
למעשה, מאחורי הקלעים, המימוש המקובל הוא שהמצביע לאובייקט מועבר כפרמטר ראשון "בלטי נראה".
לכן, כל עוד אתה לא ניגש לאיברי מחלקה (לא סטטיים) או בודק את השימוש ב-this כפי שעשו בדוגמה, אתה יכול לעשות משהו כזה:
Link *a = nullptr;Link *b = new Lint("Test");
Link *c = a->insert(b);
זה יעבוד, וב-C למעשה יהיה אותו מצביע שיש ב-b.