Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Je ne sais pas :) à notre bureau pour le code écrit comme
au minimum, ils seront réprimandés, et à juste titre, je pense.
Encore une fois, il s'agit d'un type complexe qui nécessite une initialisation correcte à la création, si la chaîne doit être initialisée, c'est un bug de MT5(4), à coup sûr.
Peut-être que la taille des tableaux devrait être remise à zéro immédiatement après leur création ?
Je ne sais pas :) Dans notre entreprise, ils recevront une amende pour avoir écrit un code tel que
Au minimum, vous serez réprimandé, et à juste titre, je pense.
Avant de pouvoir utiliser une variable, vous devez lui attribuer une valeur (l'initialiser explicitement). Vous n'êtes pas d'accord ?
L'initialisation explicite n'implique pas qu'elle soit nécessaire au moment de la déclaration. Mais si la valeur de la variable non initialisée est ensuite utilisée dans certains calculs, les conséquences sont imprévisibles.
Vous me faites peur, Rashid, avec tout le respect que je vous dois.
Une classe possède un constructeur, qui effectue l'initialisation de l'objet et notamment la définition de la valeur par défaut, si elle est logique.
Si l'initialisation initiale n'a pas lieu, il doit y avoir un moyen de savoir si l'objet est dans un état adéquat. Avec une chaîne de caractères, il est beaucoup plus logique de définir une valeur par défaut.
Une telle notation est de la paranoïa, une personne paranoïaque ne peut pas écrire du code normal a priori.
Les chaînes de caractères ne sont donc pas initialisées ?
Les chaînes de caractères ne sont donc pas initialisées ?
Vous me faites peur, Rashid, avec tout le respect que je vous dois.
Une classe a un constructeur, qui est l'endroit où l'initialisation de l'objet a lieu et inclut la définition d'une valeur par défaut, si cela a un sens.
Si l'initialisation initiale n'a pas lieu, il doit y avoir un moyen de savoir si l'objet est dans un état adéquat. Avec une chaîne de caractères, il est beaucoup plus logique de définir une valeur par défaut.
Une telle notation est de la paranoïa, une personne paranoïaque ne peut pas écrire du code normal a priori.
Les chaînes de caractères ne sont donc pas initialisées ?
Lisez l'aide - https://www.mql5.com/ru/docs/basis/types/classes :
Si une structure contient des variables de type chaîne de caractères et/ou un objet tableau dynamique , le compilateur attribue un constructeur implicite à cette structure, dans lequel tous les membres de la structure de typechaîne de caractèressont mis à zéro et une initialisation correcte est effectuée pour l'objet tableau dynamique.
...
Constructeurs et destructeurs
Un constructeur est une fonction spéciale qui est appelée automatiquement lors de la création d'un objet de structure ou d'une classe, et qui est généralement utilisée pour initialiser les membres de la classe. Dans la discussion qui suit, nous ne parlerons que des classes, mais ce qui précède s'applique également aux structures, sauf indication contraire. Le nom du constructeur doit coïncider avec le nom de la classe. Le constructeur n'a pas de type de retour (vous pouvez spécifier le type void).
Certains membres de la classe - chaînes de caractères, tableaux dynamiques et objets nécessitant une initialisation - seront initialisés de toute façon, indépendamment de la présence d'un constructeur.
C'est une déception... Au moins, je saurai.
Sera-t-il également NULL dans les structures ?
C'est une déception... Au moins, je le saurai.
Sera-t-il également NULL dans les structures ?
Comparez simplement à NULL et vous saurez tout vous-même - Type void et constante NULL:
La variable constante prédéfinie NULL est de type void, elle peut être affectée à des variables de tout autre type fondamental sans conversion. Il est également permis de comparer des variables de types fondamentaux àNULL.
Exemple :
//--- si une chaîne n'est pas initialisée, lui attribuer notre valeur prédéfinie
if(some_string==NULL) some_string="empty";
NULL peutégalement être comparé à des pointeurs d'objets créés à l'aide de l' opérateur new.
Avant qu'une variable puisse être utilisée, une valeur doit lui être attribuée (initialisation explicite). Vous n'êtes pas d'accord ?
L'initialisation explicite n'implique pas sa nécessité au moment de sa déclaration. Mais si la valeur d'une variable non initialisée est ensuite utilisée dans certains calculs, les conséquences sont imprévisibles.
En parlant d'oiseaux.
Et comment le compilateur va-t-il réagir ? Et il répondra aux questions suivantes '=' - utilisation illégale de l'affectation
Le compilateur ne s'est pas plié - '=' - utilisation illégale de l'affectation.
Ma question est la suivante : que se passera-t-il si le programmeur (dans ce cas, moi) n'initialise pas les variables avant de les utiliser (il le fait comme le compilateur l'exige et omet ce moment dans le constructeur) ?
J'ai une question : que se passe-t-il si le programmeur (dans ce cas, moi) ne prend pas soin d'initialiser les variables avant de les utiliser (en le faisant comme l'exige le compilateur et en omettant ce point dans le constructeur) ?
On dirait la question d'un nouveau venu...
Enfin, c'est ce que j'ai pensé à l'époque (c'était il y a longtemps, ça me revient), mais j'ai voulu écrire une demande dans le feu de l'action. :)
Bien que je ne comprenne toujours pas pourquoi il est interdit d'initialiser les variables au niveau du compilateur.