#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
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:2 Changed 15 years ago by
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.
(In [1872]) Fixes #824