Questions sur la POO dans MQL5 - page 18

 

Pouvez-vous me dire en quoi cela diffère ?
Créer un objet, ou un pointeur, de cette manière

class CClass
{
   public:


}CObj, *pCObj;

de la créature classique

CClass  CObj;
CClass *CObj;

J'ai remarqué un comportement différent chez les pros, j'ai commencé à me demander pourquoi, et la recherche documentaire, je ne sais même pas comment appeler la première façon de chercher.

 
Roman:

Pouvez-vous me dire en quoi c'est différent ?
Créer un objet, ou un pointeur, de cette manière

de la créature classique

J'ai remarqué un comportement différent dans les plus, je me suis demandé pourquoi, et la recherche documentaire, je ne sais même pas comment appeler la première façon de la trouver.

Il n'y a pas de différence, que ce soit en MQL ou en plus.

 
Koldun Zloy:

Ce n'est pas différent, qu'il s'agisse de MQL ou de plus.

Vous ne comprenez pas la question. La différence ne réside pas dans les langues, mais dans les déclarations elles-mêmes.
Je ne comprends pas le comportement de l'objet du premier exemple.
Je pense que l'objet est créé de la même manière sur la pile et détruit après l'appel dudestructeur de la classe, et que l'objet est visible globalement dans le code.
C'est ce que je voulais clarifier, quel est le comportement de la première méthode ?
Est-ce que je devine correctement ?
Comment s'appelle-t-il pour le trouver dans google ?

Parce que j'ai remarqué (pas en mql, mais en C++) que si on crée un objet différemment, alors le comportement dans les méthodes utilisées change, pas comme prévu.

 
Roman:

Vous ne comprenez pas la question. La différence ne réside pas dans les langues, mais dans les déclarations elles-mêmes.
Je ne comprends pas le comportement de l'objet du premier exemple.
Je pense que l'objet est également créé sur la pile et est détruit après avoir appelé le destructeur de la classe et que l'objet est globalement visible dans le code.
C'est ce que je voulais clarifier, quel est le comportement de la première méthode ?
Est-ce que je devine correctement ?
Comment ça s'appelle pour que je puisse le googler ?

Parce que j'ai remarqué que si vous créez un objet différemment, le comportement dans les méthodes utilisées change, pas comme prévu.

Je comprends la question. Il n'y a aucune différence dans les publicités.

 
Koldun Zloy:

Je comprends la question. Il n'y a aucune différence dans les publicités.

La différence se situe très probablement au niveau de la portée.
Le premier exemple d'un fichier est toujours globalement visible, le deuxième exemple ou nouveau, peut être caché dans une fonction.

 
Roman:

La différence se situe très probablement au niveau de la portée.
Le premier exemple d'un fichier est toujours visible globalement, le deuxième exemple ou nouveau, peut être caché dans une fonction.

La différence ici n'est pas de savoir comment vous le déclarez, mais où.

 
Koldun Zloy:

La différence ici n'est pas de savoir comment vous déclarez, mais où.

Moi aussi, je suis arrivé à cette conclusion par un raisonnement logique :))
Je voulais être sûr que mes pensées étaient correctes. Merci pour cette précision.

 
Vladimir Simakov:
   lotDigits=MathMax(-(int)MathFloor(MathLog10(lotStep)),0);

J'ai vérifié, ce code ne fonctionne pas correctement pour calculer le point décimal

En fait, le mien ne fonctionne pas toujours correctement non plus, je le sais.

un script pour le vérifier :

void OnStart()
  {
   double l=0.0;
   for(int i=0; i<100; i++)
     {
      Print(l," ---> LotDigits / MyDigits = ",LotDigits(l)," / ",MyDigits(l));
      l+=0.003;
     }
  }
//+------------------------------------------------------------------+
int LotDigits(double value)
  {
   return(MathMax(-(int)MathFloor(MathLog10(value)),0));
  }
//+------------------------------------------------------------------+
int MyDigits(double v)
  {
   long i=10000000,k=long(v/0.0000001);
   int d=0;
   while(d<7 && k%i>0)
     {
      i/=10;
      d++;
     }
   return(d);
  }
//+------------------------------------------------------------------+

J'ai joint le journal du script.

Dossiers :
20190829.log  9 kb
 
Roman:

Pouvez-vous me dire en quoi cela diffère ?
Créer un objet, ou un pointeur, de cette manière

de la créature classique

Chez les pros, j'ai remarqué un comportement différent, je me suis demandé pourquoi, et la recherche documentaire, je ne sais même pas comment appeler la première façon de chercher.

Personnellement, je ne vois pas beaucoup de différence non plus, mais le style même de ces écrits me semble assez dangereux.

Le pointeur doit être immédiatement, à la création, soit égal à NULL, soit au pointeur d'un objet réel. Un petit espace mémoire est créé où ce pointeur sera stocké, soit avec une valeur nulle, soit comme un pointeur normal.

La déclaration d'un objet, en revanche, crée l'objet entier, en appelant le constructeur et en allouant de la mémoire.

 
Igor Makanu:

J'ai vérifié, ce code ne fonctionne pas correctement dans le calcul du point décimal

En fait, le mien ne fonctionne pas toujours correctement non plus, je le sais.

un script pour le vérifier :

J'ai joint le journal du script.

Je suppose qu'il n'y en aura pas beaucoup, comme 0,15. Du moins, je n'en ai pas entendu parler. Si j'en vois soudainement un, je le referai.