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
No sé :) en nuestra oficina para el código escrito como
como mínimo, se les regañará, y con razón, en mi opinión.
De nuevo, este es un tipo complejo que requiere una correcta inicialización en la creación, si la cadena necesita ser inicializada - es un error de MT5(4), seguro.
¿Tal vez el tamaño de las matrices debería ponerse a cero inmediatamente después de su creación?
No lo sé :) En nuestra empresa, recibirán una multa por escribir código como
Como mínimo, se le reprenderá, y con razón, creo.
Antes de poder utilizar una variable, hay que asignarle un valor (inicializarla explícitamente). ¿O no estás de acuerdo?
La inicialización explícita no implica su necesidad en el momento de la declaración. Pero si el valor de la variable no inicializada se utiliza luego en algunos cálculos, las consecuencias son imprevisibles.
Me asustas, Rashid, con todo el respeto.
Una clase tiene un constructor, que realiza la inicialización del objeto e incluye el establecimiento del valor por defecto, si es lógico.
Si la inicialización no se produce, debe haber una manera de saber si el objeto está en un estado adecuado. Con una cadena tiene mucho más sentido establecer un valor por defecto.
Esa notación es una paranoia, un paranoico no puede escribir un código normal a priori.
Entonces, ¿las cadenas no se inicializan?
Entonces, ¿las cadenas no se inicializan?
Me asustas, Rashid, con todo el respeto.
Una clase tiene un constructor, que es donde tiene lugar la inicialización del objeto e incluye el establecimiento de un valor por defecto, si eso tiene sentido.
Si la inicialización no se produce, debe haber una forma de saber si el objeto está en un estado adecuado. Con una cadena tiene mucho más sentido establecer un valor por defecto.
Esa notación es una paranoia, un paranoico no puede escribir un código normal a priori.
¿Las cadenas no se inicializan?
Lea la ayuda - https://www.mql5.com/ru/docs/basis/types/classes:
Si una estructura contiene variables de tipo cadena y/o un objeto arraydinámico, el compilador asigna un constructor implícito a dicha estructura, en el que se ponen a cero todos los miembros de la estructura de tipo cadena y se realiza una correcta inicialización del objeto array dinámico.
...
Constructores y destructores
Un constructor es una función especial que se llama automáticamente cuando se crea un objeto de estructura o una clase, y suele utilizarse para inicializar los miembros de la clase. En la siguiente discusión sólo hablaremos de clases, lo anterior también se aplica a las estructuras, a menos que se indique lo contrario. El nombre del constructor debe coincidir con el nombre de la clase. El constructor no tiene tipo de retorno (se puede especificar el tipo void).
Algunos miembros de la clase -cadenas, matrices dinámicas y objetos que requieren inicialización- se inicializarán de todos modos, independientemente de la presencia de un constructor.
Eso es un fastidio... Bueno, al menos lo sabré.
¿También será NULO en estructuras?
Eso es un fastidio... Bueno, al menos lo sabré.
¿También será NULO en estructuras?
Sólo tienes que comparar con NULL y lo sabrás todo tú mismo - Tipo void y constante NULL:
La variable constante predefinida NULL es de tipo void. Se puede asignar a variables de cualquier otro tipo fundamental sin necesidad de conversión. También se permite comparar variables de tipos fundamentales conNULL.
Ejemplo:
//--- si una cadena no está inicializada, asignarle nuestro valor predefinido
if(some_string==NULL) some_string="empty";
NULLtambién puede compararse con punteros a objetos creados con el operador new.
Antes de poder utilizar una variable, hay que asignarle un valor (inicializarla explícitamente). ¿O no estás de acuerdo?
La inicialización explícita no implica su necesidad en el momento de declarar la variable. Pero si el valor de una variable no inicializada se utiliza luego en algunos cálculos, las consecuencias son imprevisibles.
Hablando de pájaros.
¿Y cómo responderá el compilador? Y responderá a lo siguiente '=' - uso de asignación ilegal
El compilador no estaba doblado - '=' - uso de asignación ilegal.
Mi pregunta es - ¿Qué ocurrirá si el programador (en este caso, yo) no inicializa las variables antes de utilizarlas (lo hace como exige el compilador y omite este momento en el constructor)?
Tengo una pregunta - ¿Qué pasa si el programador (en este caso yo) no se encarga de inicializar las variables antes de usarlas (haciéndolo como exige el compilador y omitiendo este punto en el constructor)?
Parece una pregunta de algún recién llegado...
Bueno, eso es lo que pensé en su momento (fue hace mucho tiempo, me viene a la mente), pero quise escribir una solicitud en caliente. :)
Aunque sigo sin entender por qué está prohibido inicializar variables a nivel de compilador.