Características del lenguaje mql5, sutilezas y técnicas - página 215
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Por cierto, si creamos un array estático X x[n]; y X tiene un k-tor, entonces todos los campos de los elementos en él se pondrán a cero primero, incluso privados, y sólo entonces se llamará al k-tor. Por lo tanto, no hay ninguna violación del paradigma OOP al poner a cero los campos privados.
Pero el hecho de que el constructor no funcione es un error.
Por cierto, si se objetiva un array estático X x[n]; y X tiene un k-tor, entonces todos los campos de elementos en él se pondrán a cero primero, incluso los privados, y sólo entonces se llamará al k-tor. Por lo tanto, no hay ninguna violación del paradigma OOP al poner a cero los campos privados.
Eso es genial. Así, resulta que la puesta a cero viene ANTES del constructor, y por lo tanto todo es correcto. Gracias.
He mirado mi investigación en MQL5, podría ser peor, incluso inflar la historia en el indicador por varios TFs:
Puedo escribir muchas cosas en una declaración for ))))
Nunca me he encontrado con una llamada a una función nula en una sentencia for. He visto otras variantes con bastante frecuencia.
Me olvidé de añadir, si una clase tiene campos no triviales (objetos), entonces después de cero-init todo el objeto para tales campos su c-tor por defecto será llamado.
Lee:
Los efectos de la inicialización del valor son:
Lea sobre la inicialización por defecto:
¡UB!
El hecho de que el compilador te inicialice con ceros, no significa nada, hoy inicializa, y mañana, después de la próxima actualización....
Lee:
Los efectos de la inicialización del valor son:
Lea sobre la inicialización por defecto:
¡UB!
El hecho de que el compilador te inicialice con ceros, no significa nada, hoy inicializa, y mañana, después de la próxima actualización....
Mi post "Forgot to add...." fue escrito como complemento al anterior:
Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio
Peculiaridades del lenguaje mql5, consejos y trucos
mktr8591, 2021.11.18 18:15
@A100
Si recuerdas que mql fue creado a partir de C++, estos dos ejemplos (sus homólogos) funcionan bien allí porque no hay constructores en estas clases (es decir, hay un constructor implícito):
Ejemplo en C++:
Así que si no hay campos const en la estructura/clase, entonces la lógica es correcta.
Se trataba de una situación determinada: cuando una clase no tiene constructores de usuario y hay un constructor implícito que no se borra. En este caso, el punto 1 citado por usted no es apropiado.
Punto"2) si T es un tipo de clase con un constructor por defecto que no es ni proporcionado por el usuario ni eliminado (es decir, puede ser una clase con un constructor por defecto implícitamente definido o eliminado), el objeto escero-inicializado y se comprueban las restricciones semánticas para la inicialización por defecto, y si T tiene un constructor por defecto no trivial, el objeto estáinicializado por defecto;".
Así que todo encaja.
Lee:
Los efectos de la inicialización del valor son:
Lea sobre la inicialización por defecto:
¡UB!
El hecho de que el compilador te inicialice con ceros, no significa nada, hoy inicializa, y mañana, después de la próxima actualización....
Oops. Lo leí mal. En este caso:
2) si Tes un tipo de clase con un constructor por defecto que no es proporcionado por el usuario ni eliminado (es decir, puede ser una clase con un constructor por defecto definido implícitamente o por defecto), el objeto escero-inicializadoy se comprueban las restricciones semánticas para la inicialización por defecto, y si Ttiene un constructor por defecto no trivial, el objeto seinicializa por defecto;Genial. Resulta que la puesta a cero viene ANTES del constructor, así que todo es correcto. Gracias.
No he visto una llamada a una función nula en una sentencia for. Las otras variantes son bastante comunes.
Puedes escribir lo que quieras en el tercer parámetro de la sentencia for, de hecho, la sentencia for puede sustituir a la sentencia if() con {.....}
SZZ: También he visto macros como
Puedes escribir lo que quieras en el tercer parámetro de la sentencia for, de hecho, la sentencia for puede sustituir a la sentencia if() con {.....}
SZZ: También he visto macros como
Quita el punto y coma, si no se pierde todo el sentido)))
Elimine el punto y coma, de lo contrario se pierde todo el sentido))))
sí, claro - este ejemplo en las macros para poner ; cuando se llama a una macro, no uso mucho las macros - no hay práctica