C++/מחלקות: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
שורה 157:
== מפרקים ==
 
מפרק הוא פונקציה הפוכה לבנאי, כלומר, המטרה העיקרית של המפרק היא לשחרר את המשאבים שהוקצאו ע"י הבנאי. המפרק נקרא בעת השמדת מופע המחלקה, דבר זה יקרה בעת יציאה מבלוק עם משתנים מקומיים מטיפוס המחלקה, שימוש ב-delete על אובייקט שהוקצאשהוקצה דינאמיתדינמית או בעת יציאה מפונקצית ה-main (יושמדו המשתנים הגלובליים והסטטיים).
 
למפרק ניתן את שם המחלקה שלפניו נוסיף זרקאטילדה (~). סימן זה בא לציין שמפרק הוא "לא בנאי", הזרקאהטילדה בCב-C++{{D}} היאהוא אופרטור הפיכת הסיביות (Bitwise NOT). כיוון שהמפרק נקרא אוטומטית הוא לא יקבל פרמטרים ולא יחזיר ערך. לדוגמה, הנה חלק מממוש אפשרי למחלקת מחרוזות:
<div style="direction: ltr;"><source lang="cpp">
class myString
שורה 167:
 
public:
// בנאי העושה עותק שלהמעתיק מחרוזת קיימת
myString(const myString& str)
{
שורה 178:
~myString()
{
// יש לשחרר את הזיכרון שהוקצאשהוקצה
delete[] buf;
}
שורה 186:
</source></div>
 
''הערה:'' ניתן לקרוא למפרק באופן ישיר מבלי לפנות את הזיכרון: {{קוד בשורה|str.~myString()}} אך זהו נושא מתקדם העוסק בעבודה עם זיכרוןזכרון לא מאותחל.
 
== מצביע this ==