011
26.03.2004, 08:40 Uhr
ao
(Operator)
|
| Zitat: |
~Dirk23 postete Aber nun egal, ob der Destruktor als private oder protected deklariert wird. Dieser Destruktor wird also niemals aufgerufen.
|
Doch, wird er.
| C++: |
// Rem a references void rem_ref() { if (!(--refs)) delete this;}
|
Der Zähler wird dekrementiert, und wenn er 0 erreicht, wird "delete this" ausgeführt. Im Gegensatz zu free() bewirkt delete nicht nur die Freigabe des Speichers, sondern vorher auch den Aufruf des entsprechenden Destruktors.
Mach ein kleines Testprogramm, starte es im Debugger und setze einen Breakpoint auf den Destruktor, dann siehst du es.
ao |