Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Non lo so :) nel nostro ufficio per il codice scritto come
come minimo saranno rimproverati, e giustamente, imho.
Di nuovo, questo è un tipo complesso che richiede una corretta inizializzazione alla creazione, se la stringa deve essere inizializzata, è un bug di MT5(4), di sicuro.
Forse la dimensione degli array dovrebbe essere azzerata immediatamente dopo la creazione?
Non lo so :) Nella nostra azienda, si prende una multa per aver scritto codice come
Come minimo, sarete rimproverati, e giustamente, credo.
Prima di poter usare una variabile, dovete assegnarle un valore (inizializzarla esplicitamente). O non sei d'accordo?
L'inizializzazione esplicita non implica la sua necessità al momento della dichiarazione. Ma se il valore della variabile non inizializzata viene poi utilizzato in alcuni calcoli, le conseguenze sono imprevedibili.
Mi fai paura, Rashid, con tutto il rispetto.
Una classe ha un costruttore, che esegue l'inizializzazione iniziale dell'oggetto e include l'impostazione del valore predefinito, se è logico.
Se l'inizializzazione iniziale non avviene, ci deve essere un modo per sapere se l'oggetto è in uno stato adeguato. Con una stringa ha molto più senso impostare un valore predefinito.
Tale notazione è paranoia, una persona paranoica non può scrivere codice normale a priori.
Quindi le stringhe non sono inizializzate?
Quindi le stringhe non sono inizializzate?
Mi fai paura, Rashid, con tutto il rispetto.
Una classe ha un costruttore, che è dove avviene l'inizializzazione dell'oggetto e include l'impostazione di un valore predefinito, se è logico.
Se l'inizializzazione iniziale non avviene, ci deve essere un modo per sapere se l'oggetto è in uno stato adeguato. Con una stringa ha molto più senso impostare un valore predefinito.
Tale notazione è paranoia, una persona paranoica non può scrivere codice normale a priori.
Quindi le stringhe non sono inizializzate?
Leggete la guida - https://www.mql5.com/ru/docs/basis/types/classes:
Se una struttura contiene variabili di tipo stringa e/o un oggetto array dinamico , il compilatore assegna un costruttore implicito a tale struttura, in cui tutti i membri della struttura di tipostringasono azzerati e viene fatta una corretta inizializzazione per l'oggetto array dinamico.
...
Costruttori e distruttori
Un costruttore è una funzione speciale che viene chiamata automaticamente quando si crea un oggetto struttura o una classe, e di solito è usato per inizializzare i membri della classe. Nella seguente discussione parleremo solo di classi, quanto detto sopra vale anche per le strutture, a meno che non sia indicato diversamente. Il nome del costruttore deve coincidere con il nome della classe. Il costruttore non ha un tipo di ritorno (potete specificare il tipo void).
Alcuni membri della classe - stringhe, array dinamici e oggetti che richiedono l'inizializzazione - saranno inizializzati comunque, indipendentemente dalla presenza di un costruttore.
Che sfortuna... Almeno lo saprò.
Sarà NULLA anche nelle strutture?
Che sfortuna... Beh, almeno lo saprò.
Sarà NULLA anche nelle strutture?
Basta confrontare con NULL e saprete tutto da soli - Tipo void e costante NULL:
Lavariabile costante predefinita NULL è di tipo nullo e può essere assegnata a variabili di qualsiasi altro tipo fondamentale senza conversione. È anche permesso confrontare variabili di tipi fondamentali conNULL.
Esempio:
//--- se una stringa non è inizializzata, assegnarle il nostro valore predefinito
if(some_string==NULL) some_string="vuoto";
NULL puòanche essere confrontato con puntatori a oggetti creati utilizzando l 'operatore new.
Prima che una variabile possa essere utilizzata, le deve essere assegnato un valore (inizializzato esplicitamente). O non sei d'accordo?
L'inizializzazione esplicita non implica la necessità di tale al momento della sua dichiarazione. Ma se il valore di una variabile non inizializzata viene successivamente utilizzato in alcuni calcoli, le conseguenze sono imprevedibili.
A proposito di uccelli.
E come risponderà il compilatore? E risponderà a quanto segue '=' - uso illegale dell'assegnazione
Il compilatore non è stato piegato - '=' - uso illegale dell'assegnazione.
La mia domanda è - Cosa succederà se il programmatore (in questo caso, io) non inizializza le variabili prima di usarle (lo fa nel modo richiesto dal compilatore e omette questo momento nel costruttore)?
Ho una domanda - Cosa succede se il programmatore (in questo caso io) non si occupa di inizializzare le variabili prima di usarle (facendolo come richiesto dal compilatore e mancando questo punto nel costruttore)?
Sembra una domanda di qualche nuovo arrivato...
Beh, questo è quello che ho pensato in quel momento (è stato molto tempo fa, mi viene in mente), ma ho voluto scrivere una domanda nella foga del momento. :)
Anche se ancora non capisco perché è vietato inizializzare le variabili a livello di compilatore.