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 comprends toujours pas ce que sont les pointeurs et les références dans MQL5 et maintenant dans MQL4. Quelle est la différence entre le passage par référence et le pointeur, si ce n'est du code supplémentaire ? Il y a une différence en C++, mais quelle est-elle ici ? S'il n'est pas difficile d'écrire plus en détail.
Le passage par référence nécessite que l'objet passé par référence soit initialisé. Le passage par un pointeur n'a pas cette restriction :
Lors de l'appel de la fonction TestShapeRef, le code plantera car la forme n'est pas initialisée. En revanche, dans la fonction TestShapePointer, des contrôles constants sont nécessaires, que l'objet passé soit initialisé ou non. Par conséquent, il convient de suivre la règle empirique :
Il y a une autre nuance subtile que vous devez garder à l'esprit. Reprenons l'exemple précédent :
Ce programme fonctionnera-t-il correctement ? Non, il se terminera par l'erreur "invalid pointer access" à la ligne printf(shape.name) ; //ERROR ( !?) , malgré le fait que nous semblions être assurés de créer un objet dans la fonction TestShapePointer. Le fait est qu'en réalité, une référence NULL a été transmise à la place de la forme. En d'autres termes, la forme à l'intérieur de la fonction et la forme passée sont des objets différents! Ainsi, après avoir quitté la fonction, la forme est toujours égale à NULL, et le pointeur de forme à l'intérieur de la fonction est perdu (effacé dans la pile). Donc.Est-il possible de créer un tableau avec des objets de types différents ?
Prenons cet exemple :
//---
Comment accéder aux méthodes des classes héritées ?
Comment accéder aux méthodes des classes héritières ?
Avez-vous essayé de lancer un type de cible ?
Non. C'est la première fois que j'en entends parler. Où puis-je trouver des informations à ce sujet ?
Le type de conversion habituel, dont voici un exemple :
Avez-vous essayé de lancer le type cible ?
Merde, et vous parlez de sécurité linguistique après ça ?
Ne serait-il pas préférable d'utiliser le polymorphisme?
Voici comment cela se passe :