MQL5 Le compilateur ne fait pas la distinction entre une classe et un pointeur vers celle-ci - page 7
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
Vous proposez donc d'interdire complètement le nommage implicite des pointeurs ? Je ne pense pas que beaucoup de personnes ici seraient ravies de cela.
Que chacun ait le choix.
Je ne veux certainement pas de ce genre de tour.
Cela va sans dire. Il y a une fuite de mémoire.
Une fuite de mémoire, vous dites ? Que pensez-vous de ça ? )))
Une fuite de mémoire, vous dites ? Que pensez-vous de ça ? )))
delete item;
Cela suppose donc que le sujet est prêt à être traité de cette façon. Combien d'entre eux prévoient cette possibilité ?
Cela suppose donc que l'objet est prêt à être traité de cette manière. Beaucoup de personnes prévoient-elles une telle éventualité ?
Je pense que si quelqu'un écrit le mot new, il doit savoir exactement où se trouve le mot delete correspondant ailleurs dans son code.
Que chacun ait le choix.
Je n'ai certainement pas besoin de telles astuces.
Je l'utilise déjà dans MQL4. Comment cela fonctionnera-t-il alors, si la syntaxe du langage est la même ?
Eh bien, pour se protéger contre de telles actions, on peut créer une méthode privée dans une classe :
Bien que, franchement, je ne vois pas de problème ici. Si vous assignez quelque chose à un objet de classe, vous vous attendez a priori à ce que l'opérateur de copie soit appelé. Vous le voulez, vous l'obtenez. Quelle différence cela fait-il s'il s'agit d'un pointeur ou d'un objet ? Le type de classe est le même. Vous ne pouvez pas attribuer de classe à un gaucher. C'est pourquoi tout cela ressemble plus à un alésage à vide.
Dans le cas contraire, avec le pointeur à gauche, c'est une autre histoire : on aurait pu s'attendre à ce que le pointeur soit assigné à quelque chose, mais il s'agit en fait de la copie d'un objet.
Le cas opposé, avec le pointeur à gauche, est différent. Là, on pourrait s'attendre à assigner quelque chose au pointeur, mais il s'avère que vous copiez un objet.
Et vous ne pouvez pas l'interdire, sinon vous ne pourrez pas copier l'objet lorsque vous en aurez vraiment besoin.
Par conséquent, vous devez tout laisser en l'état. Soyez juste conscient de ce que vous faites.
Et vous ne pouvez pas l'interdire, sinon vous ne pourrez pas copier l'objet lorsque vous en aurez vraiment besoin.
En fin de compte, il faut laisser les choses comme elles sont. Soyez juste conscient de ce que vous faites.
О ! C'est l'essentiel.
Y a-t-il beaucoup de personnes ici qui savent naviguer dans les modes de gestion de la mémoire ? Comprendre la différence entre AUTOMATIQUE et DYNAMIQUE.
Et j'ai entendu parler de STATIQUE et de BASE (bien que cela ne soit pas nécessaire).
Et vous ne pouvez pas l'interdire, sinon vous ne pourrez pas copier l'objet lorsque vous en aurez vraiment besoin.
En fin de compte, il faut laisser les choses comme elles sont. Soyez juste conscient de ce que vous faites.
Il existe des opérateurs * et & pour le réduire à ce qui est nécessaire.
Où y a-t-il un *?