Preguntas sobre POO en MQL5 - página 6

 
Dmitry Fedoseev:

Así que ahí tienes.

Así:

Ni siquiera sólo puede, sino que es mejor, porque se puede llamar así:

Si pasas un puntero por referencia, necesitas otra variable para el puntero.

***

Y si tienes que pasar un puntero a una función para crear un objeto en la función, así es como funciona:

Eso es básicamente todo lo que querías saber sobre OOP, pero tenías miedo de preguntar))

Nuh-uh

 
void z(CObj* & o){
   o = new CObj();
}

Y piénsalo así, todo funciona.

Por lo tanto, si tiene alguna pregunta sobre POO, no dude en ))))

 
Resultó una clásica desreferenciación del puntero nulo.
 
Vladimir Simakov:

Así que si tiene alguna pregunta sobre POO, no dude en ))))

Por favor, explique el significado de crear un objeto dinámico utilizando el operador new.

Cuando un objeto se crea automáticamente, se crea un objeto de clase en la pila y es más rápido que un objeto dinámico en términos detiempo de ejecución.
Cuando un objeto se crea dinámicamente, el objeto de clase se crea en la memoria (en el montón) y el gestor de memoria del sistema operativo se activa, el proceso es más lento.

Estas son las preguntas:
Si la creación automática es más rápida, ¿por qué es mejor utilizar objetos dinámicos?
¿Controlar explícitamente la asignación de memoria?
¿Eliminar un posible desbordamiento de pila?
¿Y no perder un objeto inesperadamente?
¿Porque si la pila se desborda, el objeto se borrará automáticamente?

 
Roman:


¿No estás cansado de seguir con el tema?

 
Artyom Trishkin:

¿No estás cansado de seguir con el tema?

Ajustar las preguntas para que sean lo más precisas posible.
¿Hay algo malo en ello? Hay un botón de edición, así que puedes usarlo para hacer un comentario.

 
Roman:

Por favor, explique el significado de crear un objeto dinámico con el operador new.

Cuando se crea un objeto automáticamente, el objeto de clase se crea en la pila, lo que es más rápido que un objeto dinámico en términos de tiempo de ejecución.
Cuando un objeto se crea dinámicamente, el objeto de clase se crea en la memoria (en el montón) y el gestor de memoria del sistema operativo se activa, el proceso es más lento.

Estas son las preguntas:
Si la creación automática es más rápida, ¿por qué es mejor utilizar objetos dinámicos?
¿Controlar explícitamente la asignación de memoria?
¿Eliminar un posible desbordamiento de pila?
¿Y no perder un objeto inesperadamente?
¿Porque si la pila se desborda, el objeto se borrará automáticamente?

¿Por qué no lees sobre la memoria estática, la pila y la pila?
 
Roman:

Por favor, explique el significado de crear un objeto dinámico con el operador new.

Un claro ejemplo de uso es cuando no se conoce de antemano el tipo de objeto.

Aquí hay un buen ejemplo de esto en la ayuda: https://www.mql5.com/ru/docs/basis/operators/newoperator

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
//| Создание фигуры                                                  |
 
Vladimir Simakov:

Nuh-uh

¡Sí! Excepto que todo se compila y funciona por alguna razón.

Qué clase de milagros tienes ahí... nadie lo sabe, pero, por cierto, no es de extrañar después de las muestras de código de ayer supuestamente tomadas de otro lugar en este hilo, pero que en realidad faltan en otro lugar.

***

Ah, y en caso de que no hayas olvidado de lo que estábamos hablando originalmente: de pasar un puntero a una función o método (y de lo que afirmabas que allí supuestamente se producen algunas fugas de memoria), que es exactamente donde & no es necesario.


 
Roman:

Por favor, explique el propósito de crear un objeto dinámico a través del operador new.

Cuando un objeto se crea automáticamente, el objeto de clase se crea en la pila y es más rápido que un objeto dinámico en términos de tiempo de ejecución.
Cuando se crea un objeto dinámicamente, se crea un objeto de clase en la memoria (en el montón), por lo que se involucra al administrador de memoria del sistema operativo, el proceso es más lento.

Estas son las preguntas:
Si la creación automática es más rápida, ¿por qué es mejor utilizar objetos dinámicos?
¿Controlar explícitamente la asignación de memoria?
¿Eliminar un posible desbordamiento de pila?
¿Y no perder un objeto inesperadamente?
¿Porque si la pila se desborda, el objeto se borrará automáticamente?

Si el número de objetos se conoce de antemano y es constante durante la ejecución del programa, entonces no se necesita new. En todos los demás casos - nuevo.

Razón de la queja: