close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#824 closed task (fixed)

Destructor de instancias de clases

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone: OOP Implementation
Component: OOP Version: 2.0.1
Severity: major Keywords:
Cc:

Description

En TOL la memoria no la maneja el usuario sino que el propio lenguaje se encarga de liberar la memoria al salir del ámbito local en la que se alojó.

Pero esa no es la única tarea de un destructor de instancias. Hay cosas como cerrar ficheros o conexiones a bases de datos o liberar recursos manejados por terceras partes, como es el caso de ANN en #823

Se podría reservar un nombre de método especial para ser ejecutado cuando una instancia de clase va a ser destruida. Debería ser un método con la siguiente API, ta lque si está implementado será llamado justo antes de ser destruida la instancia

Real __destroy (Real void)

Change History (2)

comment:1 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed

(In [1872]) Fixes #824

comment:2 Changed 15 years ago by Víctor de Buen Remiro

Hay que hacer notar que los métodos de destrucción, al igual que en C++, no siguen la regla de virtualización sino que se llaman todos los métodos de destrucción que existan a lo largo de la jerarquía de clases antecesoras en el orden inverso de herencia. Gracias a esto un método de destrucción sólo debe ocuparse de los miembros que se definen en su propia clase.
En caso de herencia múltiple los destructores de las clases progenitoras se llamarán en el orden en que fueron declaradas.

Note: See TracTickets for help on using tickets.