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
1) Je pensais qu'il y avait une erreur ici :
Section : Passer des paramètres au constructeur"La fonction Init() est mise de côté dans la section privée pour s'assurer que la classe peut être réinitialisée".
possible :
La fonction Init() est mise de côté dans la section public afin de permettre la réinitialisation de la classe.
2) Veuillez donner un exemple d'utilisation de la fonctionnalité"create an array with class instances (objects)" pour la section "ObjectArray". Malheureusement, je n'arrive pas à comprendre "à quoi cela sert".
3) Dans la section "En savoir plus sur l'encapsulation (private, protected, public)", le descendant classe de base->classe est mentionné en passant. Peut-être que cette donnée(class Class : public CBase) devrait être expliquée au début de la section, car je m'en suis rendu compte plus tard.
4) n'a pas trouvé:Fig.6. La visibilité de la fonction "extra" (flèche rouge) est déterminée par le type de pointeur avec lequel la classe est chargée. Cet exemple se trouve en annexe dans le fichier OOP_sDefaultVirtual_1.mq5.
5) Je n'ai pas trouvé d'indication claire sur ce qu'est une bibliothèque. Apparemment, une façon de stocker la (les) classe(s) des fonctions ? c'est-à-dire similaire au fichier include, sauf que le fichier include est stocké en tant que source, et la bibliothèque en tant que dll compilée ?
Merci beaucoup pour cet article ! J'ai été particulièrement satisfait de la présentation cohérente du matériel.
1) Je pensais qu'il y avait une erreur ici :
Section : Passer des paramètres au constructeur"La fonction Init() est mise de côté dans la section privée pour s'assurer que la classe peut être réinitialisée".
possible :
La fonction Init() est mise de côté dans la section public afin de permettre la réinitialisation de la classe.
2) Veuillez donner un exemple d'utilisation de la fonctionnalité"create an array with class instances (objects)" pour la section "ObjectArray". Malheureusement, je n'arrive pas à comprendre "à quoi cela sert".
3) Dans la section "En savoir plus sur l'encapsulation (private, protected, public)", le descendant classe de base->classe est mentionné en passant. Peut-être que cette donnée(class Class : public CBase) devrait être expliquée au début de la section, car je m'en suis rendu compte plus tard.
4) n'a pas trouvé:Fig.6. La visibilité de la fonction "extra" (flèche rouge) est déterminée par le type de pointeur avec lequel la classe est chargée. Cet exemple se trouve en annexe dans le fichier OOP_sDefaultVirtual_1.mq5.
5) Je n'ai pas trouvé d'indication claire sur ce qu'est une bibliothèque. Apparemment, une façon de stocker la (les) classe(s) des fonctions ? c'est-à-dire similaire au fichier include, sauf que le fichier include est stocké en tant que source, et la bibliothèque en tant que dll compilée ?
Merci beaucoup pour cet article ! J'ai été particulièrement satisfait de la présentation cohérente du matériel.
1. Oui.
2. Il y a un exemple dans la section "Tableau d'objets", en fait toute la section est un exemple avec une description.
3. La section "Utilisation de la POO pour modifier la logique de fonctionnement du programme" en tient compte.
4. La mention "Cet exemple se trouve en annexe dans le fichier..." signifie que le fichier contient un exemple pour la section indiquée par l'en-tête de la section. Cela ne signifie pas que les exemples reprennent tout ce qui est écrit dans l'article. Ces exemples peuvent ne pas exister du tout, tout est écrit dans l'article. Mais les exemples sont là, vous pouvez les prendre comme base et expérimenter. L'article est principal, les exemples sont secondaires.
5. Уже давно указано: http://ru.wikipedia.org/wiki/%C1%E8%E1%EB%E8%EE%F2%E5%EA%E0_(%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5)
Article très intéressant, écrit dans un langage compétent et "accessible".
Merci à l'auteur.
J'ai deux exemples de code basés/copiés à partir de cet article. Ils créent tous les deux un tableau de pointeurs vers une classe et les suppriment à la sortie. Cependant, l'un d'eux sort avec une fuite de mémoire et l'autre sort sans fuite de mémoire. La seule différence est que dans le deuxième exemple, l'alerte dans le destructeur est commentée. Lorsque l'alerte dans le destructeur est supprimée, il y a une fuite de mémoire. C'est très bizarre. Quelqu'un peut-il m'expliquer ? S'il vous plaît, aidez-moi, cela me rend fou.
A la fin des exemples de code de cet article, j'ai inclus un exemple extrêmement simple de code que j'ai écrit et qui a également une fuite de mémoire. Encore une fois, pourquoi ???? Il n'y a rien de compliqué dans ce dernier exemple de code...
Ce code fonctionne sans fuite de mémoire :
Messages du journal de l'expert, pas de fuite de mémoire :
PI 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 0
KP 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 1
JG 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 2
EN 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 3
LF 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 4
OM 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 5
FD 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 6
IK 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 7
HS 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 8
CJ 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructeur 9
Ce code sort AVEC une fuite de mémoire !!!! Why ????????? La seule différence est de commenter le 'Alert' dans le destructeur...
Messages du journal de l'expert, note de la fuite de mémoire :
FM 1 OOP_sConstDestr_2 (EURUSD,M1) 13:51:19 10 objets non supprimés restants
EG 1 OOP_sConstDestr_2 (EURUSD,M1) 13:51:19 10 objets de type CName restants
GO 1 OOP_sConstDestr_2 (EURUSD,M1) 13:51:19 200 octets de fuite de mémoire
Dernier exemple, mon code, très simple mais qui sort avec une fuite de mémoire....
Messages du journal de l'expert, note de la fuite de mémoire :
MR 0 tester (EURUSD,M1) 14:07:23 Dernière erreur- 0 Heure actuelle : 2013.02.06 23:07:23
FL 1 testeur (EURUSD,M1) 14:07:23 10 objets non supprimés restants
KN 1 testeur (EURUSD,M1) 14:07:23 10 objets de type CCandleStick restants
JS 1 testeur (EURUSD,M1) 14:07:23 160 octets de mémoire fuient
J'ai deux exemples...
J'ai vérifié les trois varaints. Les trois sont identiques. Toutes sont normales. Aucune ne donne lieu à des fuites. Dans ces exemples, ce n'est pas possible - nous avons le tableau, dans chaque élément du tableau il y a une instance, lorsque nous terminons nous supprimons tous les objets. Les objets ne créent pas de copies d'eux-mêmes, vous ne pouvez pas manquer de supprimer quelque chose de semblable. Si l'objet crée une copie de lui-même, alors nous pouvons avoir des difficultés avec la suppression, il est très facile de rater quelque chose. Montrer les variantes qui ont vraiment des fuites.
Utilisez le bouton SRC pour insérer le code (mieux - attachez les fichiers).
Désolé pour mon anglais :)
J'ai vérifié les trois varaints. Les trois sont identiques. Elles sont toutes normales. Aucune ne donne lieu à des fuites. Dans ces exemples, ce n'est pas possible - nous avons le tableau, dans chaque élément du tableau il y a une instance, lorsque nous terminons nous supprimons tous les objets. Les objets ne créent pas de copies d'eux-mêmes, vous ne pouvez pas manquer de supprimer quelque chose de semblable. Si l'objet crée une copie de lui-même, alors nous pouvons avoir des difficultés avec la suppression, il est très facile de rater quelque chose. Montrer les variantes qui ont vraiment des fuites.
Utilisez le bouton SRC pour insérer le code (mieux - attachez les fichiers).
Désolé pour mon anglais :)
Merci beaucoup d'avoir pris le temps de répondre. Je ne suis pas sûr que vous ayez vu ma question complémentaire. Elle était dans un commentaire séparé qui a probablement été supprimé parce que je ne suis pas très familier avec ce forum. Cependant, j'ai essayé d'exécuter les trois exemples sur un ancien ordinateur avec une ancienne version de MetaTrader. Dans l'ancienne version, les trois semblent fonctionner correctement. Il n'a pas généré d'erreur de fuite de mémoire dans le journal de l'expert, je pense qu'il s'agissait de la build 560 ???Je crois que c'était la version 560 ? Je ne me souviens pas et j'ai mis à jour la version 560 vers la nouvelle version 756. Après la nouvelle version, j'ai les mêmes problèmes de fuite de mémoire. Est-il possible que l'ancienne version n'ait pas signalé les problèmes de fuite de mémoire parce que ce n'était pas une fonctionnalité ? Quelle version utilisez-vous ? Merci encore.