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

תוכן שנמחק תוכן שנוסף
שורה 175:
== מפרקים ==
 
מפרק הוא פונקציה הפוכה לבנאי, כלומר, המטרה העיקרית של המפרק היא לשחרר את המשאבים שהוקצאו על-ידי הבנאי. המפרק נקרא בעת השמדת מופע המחלקה, דבר זה יקרה בעת יציאה מבלוק עם משתנים מקומיים מטיפוס המחלקה,. שימוש ב-delete על אובייקטעצם שהוקצה דינמית או בעת יציאה מפונקצית ה-main (יושמדו המשתנים הגלובליים והסטטיים).
 
למפרק ניתן את שם המחלקה שלפניו נוסיף טילדה (~). סימן זה בא לציין שמפרק הוא "לא בנאי", הטילדה ב-C++{{D}} הוא אופרטור הפיכת הסיביות (Bitwise NOT). כיוון שהמפרק נקרא אוטומטית, הוא לא יקבל פרמטרים ולא יחזיר ערך. לדוגמה, הנה חלק מממושממימוש אפשרי למחלקת מחרוזות:
<div style="direction: ltr;"><source lang="cpp">
class myStringmy_string
{
char *buf;
int length;
 
public:
// בנאי המעתיק מחרוזת קיימת
myStringmy_string(const myStringmy_string& str)
{
int i;
length = str.length;
buf = new char[length+1];

for(int i = 0 ; i <= length ; i++)
{
buf[i] = str.buf[i];
}
}
 
~myStringmy_string()
{
// יש לשחרר הזיכרון שהוקצה
delete[] buf;
}
 
//* פונקציות ממשק לעבודה עם מחרוזות ... */
};
</source></div>
 
''הערה:'' ניתן לקרוא למפרק באופן ישיר מבלי לפנות את הזיכרון: {{קוד בשורה|str.~myStringmy_string()}} אך זהו נושא מתקדם העוסק בעבודה עם זכרון לא מאותחל.
 
== מצביע this ==