Perguntas sobre OOP em MQL5 - página 18

 

Você pode me dizer como isso difere?
Criar um objeto, ou ponteiro, desta forma

class CClass
{
   public:


}CObj, *pCObj;

da criatura clássica

CClass  CObj;
CClass *CObj;

Percebidos comportamentos diferentes nos profissionais, começaram a se perguntar por que, e a pesquisa bibliográfica, não sabem nem o que chamar de primeira forma de olhar.

 
Roman:

Você pode me dizer como é diferente?
Criar um objeto, ou ponteiro, desta forma

da criatura clássica

Notei comportamentos diferentes nos prós, me perguntei por que, e na busca bibliográfica, nem sei como chamar a primeira maneira de encontrá-la.

Não há diferença, nem em MQL nem em plus.

 
Koldun Zloy:

Não é diferente, seja em MQLs ou pluses.

Você não entende a pergunta. A diferença não está nos idiomas, mas nas declarações propriamente ditas.
Não entendo o comportamento do objeto a partir do primeiro exemplo.
Meu palpite é que o objeto é criado da mesma maneira na pilha e destruído depois queo destruidor de classe é chamado, e o objeto é visível globalmente no código.
Era isso que eu queria esclarecer, qual é o comportamento do primeiro método?
Estou adivinhando corretamente?
Como é chamado para encontrá-lo no google?

Porque notei (não em mql, mas em C++) que se você criar um objeto de maneira diferente, então o comportamento nos métodos utilizados muda, não como esperado.

 
Roman:

Você não entende a pergunta. A diferença não está nos idiomas, mas nas declarações propriamente ditas.
Não entendo o comportamento do objeto a partir do primeiro exemplo.
Meu palpite é que o objeto também é criado na pilha e é destruído após chamar o destruidor de classe e o objeto é globalmente visível no código.
Era isso que eu queria esclarecer, qual é o comportamento do primeiro método?
Estou adivinhando corretamente?
Como se chama para que eu possa pesquisá-lo no Google?

Porque notei que se você cria um objeto de maneira diferente, o comportamento nos métodos utilizados muda, não como esperado.

Eu entendo a pergunta. Não há diferença nas propagandas.

 
Koldun Zloy:

Eu entendo a pergunta. Não há diferença nas propagandas.

A diferença está, muito provavelmente, no escopo.
O primeiro exemplo em um arquivo é sempre visível globalmente, o segundo exemplo ou novo, pode ser escondido em uma função.

 
Roman:

A diferença está, muito provavelmente, no escopo.
O primeiro exemplo em um arquivo é sempre visível globalmente, o segundo exemplo ou novo, pode ser escondido em uma função.

A diferença aqui não é como você o declara, mas onde.

 
Koldun Zloy:

A diferença aqui não é como você declara, mas onde.

Eu, também, cheguei a essa conclusão por meio de um raciocínio lógico :))
Eu queria ter certeza de que meus pensamentos estavam corretos. Obrigado pelo esclarecimento.

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

Verifiquei que este código não funciona corretamente para o cálculo do ponto decimal

Basicamente, o meu também nem sempre funciona corretamente, eu sei disso.

um roteiro para conferir:

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);
  }
//+------------------------------------------------------------------+

Tenho o registro do roteiro anexado.

Arquivos anexados:
20190829.log  9 kb
 
Roman:

Você pode me dizer como isso difere?
Criar um objeto, ou ponteiro, desta forma

da criatura clássica

Nos profissionais eu notei comportamentos diferentes, eu me perguntava por que, e na pesquisa bibliográfica, eu nem sei o que chamar de primeira maneira de olhar.

Pessoalmente, eu também não vejo muita diferença, mas o próprio estilo de tal escrita me parece bastante perigoso.

O ponteiro deve ser imediatamente, na criação, igual ao NULL ou ao ponteiro de um objeto real. Um pequeno espaço de memória é criado onde este ponteiro será armazenado, seja com um valor nulo ou como um ponteiro normal.

A declaração de um objeto, por outro lado, cria o objeto inteiro, chamando o construtor e alocando memória.

 
Igor Makanu:

Verifiquei que este código não funciona corretamente para calcular o número de casas decimais

Basicamente, o meu também nem sempre funciona corretamente, eu sei disso.

um roteiro para conferir:

Tenho o registro do roteiro anexado.

Eu tenho uma suposição de que não haverá muito, como 0,15. Pelo menos ainda não ouvi falar disso. Se de repente eu vir um, eu o refaço.