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
D'une manière ou d'une autre, la question de savoir si la polyvalence affecte ou non la vitesse de traitement du code du CPU est passée complètement inaperçue(2011.04.04 21:58).
Si la question semble incorrecte, stupide, etc. - alors écrivez-le.
D'une manière ou d'une autre, la question de savoir si la polyvalence affecte ou non la vitesse de traitement du code du CPU est passée complètement inaperçue(2011.04.04 21:58).
Si la question semble incorrecte, stupide, etc. - il suffit de l'écrire ainsi.
La question est parfaitement logique, la réponse est non, elle ne l'est pas.
Je l'ai eu ! Eh bien, vous m'avez donné beaucoup d'encouragement ! Je vais doubler le plaisir de tamponner des méthodes imbriquées maintenant :)
Urain, merci pour l'exemple ! Bien que vous n'ayez aucune expérience de la programmation, il est parfois difficile de se deviner pour vérifier et écrire un code correct. Et ici, tout est clair et compréhensible.
Question. Une instance d'une classe enfant peut-elle se supprimer elle-même ? En d'autres termes, une telle construction fonctionnera-t-elle ?
Le compilateur ne se plaint pas de cette construction.Question. Une instance d'une classe enfant peut-elle se supprimer elle-même ? En d'autres termes, cette construction fonctionnera-t-elle ?
Le compilateur ne se plaint pas de cette construction.Si je comprends bien, je n'aime pas les pointeurs (et je ne les utilise pas souvent, surtout en MQL5), l'enfant devrait ressembler à ceci
Par conséquent, l'application ressemblerait à ceci
PS
Est-ce un bogue (ou une caractéristique du compilateur) que le compilateur l'ait manqué ?
Bien sûr, nous pouvons supposer que le descendant a transmis la classe dont nous avons besoin, mais les structures et les fonctionnalités des deux classes peuvent être très différentes. Que se passe-t-il alors ?
C_A *pointer=new C_B;
Et en utilisant le code initial comme ceci, une fuite de mémoire se produit du tout, bien que tous les contrôles du compilateur aient été passés (et il n'a même pas mentionné de problèmes possibles).
Voici le résultat (je comprends que l'objet pointeur n'est pas correctement supprimé à cause de la fuite de mémoire) :
Si je comprends bien, je n'aime pas les pointeurs (et je ne les utilise pas souvent, surtout dans MQL5), alors le descendant devrait ressembler à ceci
C_A *pointer=new C_B;
J'ai eu cette idée à partir de Tétris, et ça marche très bien pour moi. Bien sûr, il ne serait pas bon d'utiliser cette ligne à tout prix, mais elle convient très bien à des fins similaires à celles résolues dans le tetris.D'une manière ou d'une autre, la question de savoir si la polyvalence affecte ou non la vitesse de traitement du code du processeur(2011.04.04 21:58) n'est pas du tout abordée.
Si la question semble incorrecte, stupide, etc. - Il suffit de l'écrire.
La réponse est logique : plus les primitives sont simples et logiques, plus l'optimiseur sera efficace.
L'essentiel est de ne pas en faire trop :)
Légèrement modifié le code du script :
Sorties
Regardez. J'ai déclaré la méthode void Del(C_A *p) avec le modificateur public dans la classe parent. La classe enfant a donc entièrement hérité de cette méthode. Je n'ai donc pas besoin de redéclarer la même méthode dans la classe enfant. Quant à l'idée, je l'ai trouvée dans Tétris, et elle m'a été utile. Bien sûr, il ne serait pas correct d'utiliser carrément cette chaîne, mais elle convient très bien à des fins similaires à celles résolues dans le tetris.
Même en supposant que void Del(C_A *p) dans l'ancêtre est suffisant pour supprimer tout pointeur descendant, je ne vois pas l'intérêt d'utiliser
C_A *pointer=new C_B;
PS
Le seul endroit où je peux imaginer le besoin d'une telle approche est la création d'un tableau d'objets divers qui sont des descendants de la même classe (ou encore le passage d'un paramètre du type de la classe "de base" dans une fonction ou une procédure).