יש לי CLASS מסויים שיצרתי. עכשיו אני כותב לו פונקציות לכמה אופרטורים, אחת מהם היא חיסור (-) בין שני אובייקטים. מכיוון שאני לא באמת רוצה לחסר מאחד המספרים שנשלחו לפונק' (לא המחסר ולא המחוסר) אלא לבצע את החיסור ולהעביר את הערך/אובייקט, אני מנסה : ליצור אובייקט חדש זמני (אין בעיה כמובן). ואז לבצע השמה של המחוסר לאותו אובייקט אני מנסה לעשות משהו כזה : class_name temp; temp=this; הבעיה היא שהקומפיילר לא מוכן לקבל את ההשמה הזאת כתבתי פונקציה של אופרטור השמה שמקבלת פוינטר לclass_name... (שלמיטב הבנתי, זהו סוגו של this). אך עדיין אני מקבל את השגיאה הבאה :
error C2440: 'initializing' : cannot convert from 'class_name *const ' to 'class_name'
עכשיו, אם הוא מגדיר את this בתור class_name, אז ההשמה הרגילה בין שני אובייקטים (שעובדת!) הייתה נכנסת לפעולה, ואם הוא מגדיר את This בתור פוינטר ל class_name אז ההשמה השנייה שכתבתי אמורה לעבוד !
כי this* מחזיר לך אובייקט ולא מצביע ואז אתה יכול להכניס אותו לclass_name אבל this יכול להיכנס רק לclass_name* ומה שאתה עושה פה סתם קורא לcopy constructor כשאתה יכול להמנע מזה ע"י שמירת pointer.