עבור לתוכן

מה תפקידו של ה-destructor ב-c++?

Featured Replies

פורסם

נניח שבניתי class מסויים:

class list {

private:

int wanted;

int wanted1;

int length1;

int currlocation;

public:

chain *previ;

chain *anchor;

chain *curr;

list(int);

~list();

void clear();

void insert(const elem);

};

איך אני צריך להגדיר את ה-destructor כך שישחרר לי את הזיכרון שנתפס ע"י פוינטר?

פורסם

פוינטר לא תופס זיכרון מעבר ל-32 ביט שהוא לוקח, והוא משוחרר אוטומטית.

במידה והגדרת בלוק דינאמי אליו הפוינטר יצביע (בעזרת malloc או new) אתה תרצה לשחרר את הזיכרון הזה במידה והרגת את ה-class.

לכן אתה מגדיר פונקצית destroctor שתשחרר את היזכרון הדינאמי שהקצת.

פורסם
  • מחבר

השאלה היא מה התחביר של השחרור? אם הגדרתי את הפוינטר כ-new.

פורסם

אתה עושה לו פשוט delete

אתה כותב פונקציה שהמבנה שלה בדיוק כמו ה-constructor רק עם גל לפני

דוגמא פשוטה ל-class

class String {

...

char* val;

String();

~String();

}

String::String() {

val = new char[10];

}

String::~String() {

if(val) delete[] val;

}

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים