Preguntas sobre POO en MQL5 - página 85

 
No es la primera vez que me sorprendo pensando que en MQL es mejor utilizar la POO sólo cuando sea absolutamente necesario y sólo en una parte determinada del código.
 
Pavel Verveyko:
No es la primera vez que me sorprendo pensando que en MQL es mejor utilizar la POO sólo en caso de necesidad urgente y sólo en una determinada sección de código.
¿Quién demonios te ha dado una idea tan estúpida? Si no te gustan los gatos, simplemente no puedes cocinarlos))))
 

He leído en algún sitio y ha aparecido un ejemplo en el foro con dicha construcción

delete &this;

¿puede alguien hacer un ejemplo sencillo con esto?

Me interesa saber qué es lo que borra & lo que borra;

 
Igor Makanu:

He leído en algún sitio y ha aparecido un ejemplo en el foro con dicha construcción

¿puede alguien hacer un ejemplo sencillo con esto?

Me interesa saber qué es lo que borra & lo que borra;

Se borra solo)))

 
Vladimir Simakov:

Se quita solo)))

eso tiene sentido

pero sospecho que el objetivo es usarlo con métodos estáticos

necesito probarlo, realmente no sé cómo, por eso pregunté


UPD: ayer busqué en Google este tema, muchas menciones al destructor privado, también hay que pensar qué puede hacer

 
Igor Makanu:

1) pero sospecho que el objetivo de "borrar &this;" - uso con métodos estáticos
2) ayer buscó en Google este tema, muchas referencias al destructor privado, también hay que pensar qué puede aportar

1) Desde los métodos estáticos se prohíbe su acceso.
Dónde está "delete &this;" - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2) El destructor privado no permite crear un objeto en la pila, pero sí se puede crear un objeto mediante el operador new, esta vez en el montón:

class A{
   ~A(){printf(__FUNCSIG__);}
public:
    void Delete(){
        delete &this;
    }
};

void OnStart() {
   A* a_ptr = new A();
   a_ptr.Delete();
}

Aquí hay otro uso de delete &this.

 
Sergey Dzyublik:

1) Desde los métodos estáticos se prohíbe su acceso.
¿Dónde "borrar &this;" - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this

2) Un destructor privado prohíbe la creación de un objeto en la pila, pero todavía se puede crear un objeto a través del operador new, esta vez en el montón:

Aquí hay otro uso de delete &this.

Siempre se puede hacer algo con algo. Pero, ¿qué sentido tiene?

Deberías inventar un nombre, declararlo como un patrón de diseño... y eso es todo. Es genial escribir un montón de código en lugar de simplemente "borrar algo".

 
Un destructor privado protege sus desarrollos de los diletantes. Al fin y al cabo, sólo se puede utilizar la POO con ellos de forma madura: con new y delete. Por cierto, ¿ya has pensado en un nombre para el "patrón"?
 
Dmitry Fedoseev:
Realmente tienes un apodo muy apropiado ))
 
Igor Makanu:

He leído en algún sitio y ha aparecido un ejemplo en el foro con dicha construcción

¿puede alguien hacer un ejemplo sencillo con esto?

Me interesa saber qué es lo que borra y qué es lo que borra;

es un puntero al objeto actual.

Normalmente la construcción delete this se utiliza cuando un objeto es creado por new, pero la responsabilidad de borrarlo es del propio objeto. En este caso, cuando el objeto decide que ya no es necesario, llama a una función de desinicialización, en la que se borra a sí mismo así.

En mi opinión, esta es una práctica extremadamente peligrosa, aceptable sólo en el caso de los smartpoints que contarán las referencias al objeto por sí mismos y luego, cuando el número de referencias llegue a cero, podrán borrarse a sí mismos. Pero incluso en este caso, me parece, hay espacio para errores de fuga de memoria difíciles de encontrar.

En mi opinión, la responsabilidad de la eliminación debería recaer en el mismo objeto que la creó. Puede utilizar el patrón de fábrica de objetos al crearlo, pero la eliminación debe seguir siendo responsabilidad del objeto que creó el nuevo objeto.

Razón de la queja: