Página principal
Artículos y trucos
Catálogo de productos
Ejemplos y descargas
Mis libros
Cursos de formación
Investigación y desarrollo
Libros recomendados
Mis páginas favoritas
Acerca del autor
 
En colaboración con Amazon
 
Intuitive Sight

Koan #4: Armageddon

¿En qué criterio me baso para decidir si un artículo encaja dentro de los trucos o debe explicarse como un koan? Para que se convierta en un koan es necesario que la técnica o situación que trata me haya dejado, cuando menos, perplejo. Da lo mismo el nivel de dificultad. Y esto fue lo que me pasó con la siguiente "característica" de C++ Builder.

Cuando los programadores de Delphi necesitan ejecutar algún código al comienzo o final de un programa, y quieren encapsular este comportamiento dentro de una unit, pueden recurrir a las cláusulas initialization y finalization de la unidad:

unit UnitXX;
interface
   // ...
implementation
   // ...
initialization
   // ...
   // Aquí puede escribir una lista de instrucciones
finalization
   // ...
   // No se puede utilizar finalization sin initialization
end.

En C++ no existe una construcción sintáctica similar a la unit, por lo que tampoco existe un equivalente mimético de las cláusulas anteriores. Pero el programador puede recurrir a objetos globales: la definición de C++ deja bien claro que el constructor de estos objetos se debe ejecutar al inicio del programa, y el destructor se debe activar automáticamente al terminar la aplicación. ¿Seguro?

Defina una clase como la siguiente:

class TObjetoExhibicionista
{
protected:
   AnsiString fName;
public:
   // Constructor inline
   TObjetoExhibicionista(const AnsiString aName) :
      fName(aName)
   {
      ShowMessage("¡Ha nacido una estrella!");
   }
   // Un sencillo y amargo adiós a la vida (también inline)
   ~TObjetoExhibicionista()
   {
      ShowMessage("¡Adiós, mundo cruel!\nFirmado: " + fName);
   }
};

Ahora, en el mismo fichero, cree una variable global con la nueva clase:

  TObjetoExhibicionista pepe("Pepe");

Se supone que Pepe debe saludar al inicio del programa, y expresar su desencanto cuando se termine el programa y sea destruido (el Día del Juicio Final).

Compile y ejecute entonces la aplicación ... y disfrute de esos breves momentos de asombro, en los que pensará que algo anda "muy mal"...