J'ai demandé en privé ce que cela signifie. Je me suis précipité sur le forum pour y répondre, car j'ai trouvé un exemple utile qui apporte de la clarté.
À propos, si vous parlez anglais, il est très utile de chercher une telle question sur Google en anglais, non pas en MQL, mais en C++. Par exemple, comme ceci
http://www.google.com/search?q=const+in+c%2B%2B+après+fonction&oq=const+in+c%2B%2B&sourceid=chrome&ie=UTF-8
Il y aura beaucoup de liens vers des forums de programmation pure, et le C++ est assez similaire au MQL.
J'ai traduit les commentaires en russe et fait quelques ajustements pour la compatibilité MQL. Je joins le script ci-dessous. Il suffit de le compiler et tout deviendra clair.
La documentation n'apporte pas de clarté ?
Une méthode avec le modificateurconst est dite constante et ne peut pas modifier les membres implicites de sa classe. La déclaration de fonctions de classe constantes et de paramètres constants est appeléecontrôle de const-correctness. Grâce à ce contrôle, vous pouvez être sûr que le compilateur gardera la trace des valeurs inchangées des objets et générera une erreur lors de la compilation en cas d'infraction.
Le modificateurconst doit être placé après la liste des arguments dans la déclaration de la classe. La définition en dehors d'une classe doit également inclure le modificateurconst:
Un argument supplémentaire pour l'utilisation du contrôle d'intégrité est que le compilateur effectue des optimisations spéciales, par exemple en plaçant un objet persistant dans une mémoire en lecture seule.
Unefonction statique ne peut pas être définie avec le modificateurconst, car ce modificateur garantit que les membres de l'instance restent inchangés lorsque cette fonction est appelée. Mais, comme mentionné ci-dessus, une fonction statique ne peut par définition pas accéder aux membres non statiques de la classe.
https://www.mql5.com/ru/docs/basis/oop/staticmembers
De plus, à mon avis, vous n'avez pas présenté l'exemple le plus réussi de constitution d'une structure (d'abord les méthodes, puis les données des membres). Et, d'ailleurs, il est préférable d'envelopper le tout dans une classe plutôt que dans une structure, puisque les structures sont généralement utilisées comme union de données (sans méthodes).
- www.mql5.com
La documentation ne clarifie-t-elle pas les choses ?
https://www.mql5.com/ru/docs/basis/oop/staticmembers
Et à mon avis, vous n'avez pas fourni le meilleur exemple de mise en place d'une structure (d'abord les méthodes, puis les données des membres). Et, d'ailleurs, il est préférable d'envelopper le tout dans une classe plutôt que dans une structure, puisque les structures sont généralement utilisées comme union de données (sans méthodes).
Contient
Je me suis souvenu que c'était écrit quelque part dans un document, mais je ne l'ai pas trouvé. J'ai copié un exemple de stackoverflow. L'endroit où placer les données est une affaire personnelle du programmeur, bien que je les place moi-même au début. L'utilisation de structures ou de classes est du ressort du programmeur ;)))
Entrer sur
Je me suis souvenu que c'était écrit quelque part dans le document, mais je n'ai pas pu le trouver sur place. J'ai volé un exemple rapide sur stackoverflow. C'est au programmeur de décider où placer les données, mais je les ai moi-même placées au début. Le choix d'utiliser des structures ou des classes est du ressort du programmeur )))).
Vous pouvez dire "une affaire privée" à propos de beaucoup de choses de cette manière. Mais c'est vous qui l'expliquez à quelqu'un et pas en personne mais publiquement. Et votre "affaire privée" est en contradiction avec un bon style de programmation. Et la personne à qui vous l'expliquez, ainsi que de nombreux autres utilisateurs peuvent le prendre comme un bon style, ce qui n'est pas le cas.
Et à propos de la personne qui a voulu (ou peut-être dirigé) le cours ici, un tel "bloop, bloop, bloop" en dit long.
Quels membres sont explicites, quels membres sont implicites ?
Apparemment, dans ce contexte, ce sont les membres qui appellent la méthode. Ou, sinon, il s'agit des membres auxquels on peut accéder par ce biais depuis la méthode.
En C++, cela signifie qu'une méthode ne peut pas modifier les membres de la classe, à l'exception des membres déclarés mutables.
Comme en MQL on ne peut guère s'attendre à cela, cela signifie qu'une méthode ne peut en principe pas modifier un objet.
En C++, cela signifie qu'une méthode ne peut pas modifier les membres de la classe, à l'exception des membres déclarés mutables.
En MQL, cela signifie qu'une méthode ne peut en principe pas modifier un objet.
Une méthode constante ne peut pas modifier uniquement l'objet qui l'a appelée.
C'est une faute de frappe ?
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Une question posée en privé, qu'est-ce que cela signifie ? J'ai trouvé un exemple utile sur le forum qui permet de le clarifier.
À propos, si vous parlez anglais, il est très utile de chercher une telle question sur Google en anglais, non pas en MQL, mais en C++. Par exemple, comme ceci
http://www.google.com/search?q=const+in+c%2B%2B+après+fonction&oq=const+in+c%2B%2B&sourceid=chrome&ie=UTF-8
Il y aura beaucoup de liens vers des forums de programmation pure, et le C++ est assez similaire au MQL.
J'ai traduit les commentaires en russe et fait quelques ajustements pour la compatibilité MQL. Je joins le script ci-dessous, compilez-le et tout deviendra clair.