Discusión sobre el artículo "La Orden de Creación y Destrucción de Objetos en MQL5"

 

Artículo publicado La Orden de Creación y Destrucción de Objetos en MQL5:

Cada objeto, ya sea un objeto personalizado, un array dinámico o un array de objetos, se crea y elimina en el programa MQL5 de una forma particular. A menudo, algunos objetos son parte de otros objetos, y el orden de eliminación de objetos durante la desinicialización se vuelve especialmente importante. Este artículo facilita algunos ejemplos que muestran los mecanismos para trabajar con objetos.

Los programas MQL5 se escriben en conceptos de Object Oriented Programming (OOP, Programación Orientada al Objeto), y esto no solo abre nuevas posibilidades para la creación de bibliotecas personalizadas, sino que también le permitirá usar clases completas y probadas de otros desarrolladores. En la Biblioteca estándar incluida en el Terminal de Cliente MetaTrader 5 hay cientos de clases que contienen miles de métodos.

Para aprovechar al máximo el OOP, debemos aclarar algunos detalles sobre la creación y destrucción de objetos en programas MQL5. La Creación y Destrucción de Objetos se describe brevemente en la Documentación, y este artículo ilustrará este tópico con ejemplos.

Autor: MetaQuotes Software Corp.

 

En el Archivo  localvar_testscript_4.mq5

Si despues de la llamada a GetPointer(),  imprimimos el tipo de puntero, nos indica que los punteros son POINTER_AUTOMATIC no POINTER_DINAMIC

m_array[i]=GetPointer(array[i]);
Print(EnumToString(CheckPointer(m_array[i])));  //POINTER_AUTOMATIC  no  POINTER_DINAMIC

Por lo tanto esta linea nunca se ejecuta

if(CheckPointer(m_array[i])==POINTER_DYNAMIC) delete(m_array[i]);