Questions sur la POO dans MQL5 - page 6

 
Dmitry Fedoseev:

Alors voilà.

Comme ça :

Pas seulement peut, mais mieux, car vous pouvez l'appeler comme ça :

Si vous passez un pointeur par référence, vous avez besoin d'une autre variable pour le pointeur.

***

Et si vous devez passer un pointeur à une fonction pour créer un objet dans la fonction, c'est ainsi que cela fonctionne :

C'est en gros tout ce que vous vouliez savoir sur la POO, mais que vous n'osiez pas demander))).

Nuh-uh

 
void z(CObj* & o){
   o = new CObj();
}

Et pensez-y de cette façon, tout fonctionne.

Donc, si vous avez des questions sur la POO, n'hésitez pas à )))).

 
Un déréférencement classique de pointeur nul s'est avéré.
 
Vladimir Simakov:

Donc si vous avez des questions sur la POO, n'hésitez pas à )))).

Veuillez expliquer la signification de la création d'un objet dynamique à l'aide de l'opérateur new.

Lorsqu'un objet est créé automatiquement, un objet de classe est créé dans la pile et est plus rapide qu'un objet dynamique en termes detemps d'exécution.
Lorsqu'un objet est créé dynamiquement, l'objet de classe est créé en mémoire (dans le tas) et le gestionnaire de mémoire de l'OS est activé, le processus est plus lent.

Voici les questions :
Si la création automatique est plus rapide, pourquoi est-il préférable d'utiliser des objets dynamiques ?
Contrôler explicitement l'allocation de mémoire ?
Éliminer un éventuel débordement de pile ?
Et de ne pas perdre un objet de façon inattendue ?
Parce que si la pile déborde, l'objet sera automatiquement supprimé ?

 
Roman:


N'êtes-vous pas fatigué de suivre le sujet ?

 
Artyom Trishkin:

N'êtes-vous pas fatigué de suivre le sujet ?

Ajuster les questions pour qu'elles soient aussi précises que possible.
Y a-t-il quelque chose de mal à ça ? Il y a un bouton d'édition, donc vous pouvez l'utiliser pour faire un point.

 
Roman:

Veuillez expliquer la signification de la création d'un objet dynamique avec le nouvel opérateur.

Lorsqu'un objet est créé automatiquement, l'objet de classe est créé dans la pile, ce qui est plus rapide qu'un objet dynamique en termes de temps d'exécution.
Lorsqu'un objet est créé dynamiquement, l'objet de classe est créé en mémoire (dans le tas) et le gestionnaire de mémoire de l'OS est activé, le processus est plus lent.

Voici les questions :
Si la création automatique est plus rapide, pourquoi est-il préférable d'utiliser des objets dynamiques ?
Contrôler explicitement l'allocation de mémoire ?
Éliminer un éventuel débordement de pile ?
Et de ne pas perdre un objet de façon inattendue ?
Parce que si la pile déborde, l'objet sera automatiquement supprimé ?

Pourquoi ne pas vous renseigner sur la mémoire statique, la pile et le tas ?
 
Roman:

Veuillez expliquer la signification de la création d'un objet dynamique avec le nouvel opérateur.

Un exemple clair d'utilisation est le cas où le type d'objet n'est pas connu à l'avance.

Voici un bon exemple de cela dans l'aide : https://www.mql5.com/ru/docs/basis/operators/newoperator.

Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
//| Создание фигуры                                                  |
 
Vladimir Simakov:

Nuh-uh

Oui ! Sauf que tout se compile et fonctionne pour une raison quelconque.

Quel genre de miracles vous avez là... Personne ne le sait, mais, soit dit en passant, ce n'est pas surprenant après les échantillons de code d'hier censés provenir d'un autre endroit de ce fil de discussion mais qui, en fait, manquent ailleurs.

***

Oh, et au cas où vous n'auriez pas oublié ce dont nous parlions à l'origine, à savoir du passage d'un pointeur vers une fonction ou une méthode (et de ce que vous avez prétendu qu'une fuite de mémoire se produirait à cet endroit), ce qui est exactement là où & n'est pas nécessaire.


 
Roman:

Veuillez expliquer le but de la création d'un objet dynamique par le biais du nouvel opérateur.

Lorsqu'un objet est créé automatiquement, l'objet de classe est créé dans la pile et est plus rapide qu'un objet dynamique en termes de temps d'exécution.
Lors de la création dynamique d'un objet, un objet de classe est créé en mémoire (dans le tas) en impliquant le gestionnaire de mémoire de l'OS, le processus est plus lent.

Voici les questions :
Si la création automatique est plus rapide, pourquoi est-il préférable d'utiliser des objets dynamiques ?
Contrôler explicitement l'allocation de mémoire ?
Éliminer un éventuel débordement de pile ?
Et ne pas perdre un objet de manière inattendue ?
Parce que si la pile déborde, l'objet sera automatiquement supprimé ?

Si le nombre d'objets est connu à l'avance et qu'il est constant pendant l'exécution du programme, alors new n'est pas nécessaire. Dans tous les autres cas - neuf.