Perguntas sobre OOP em MQL5 - página 6

 
Dmitry Fedoseev:

Então, aí está.

Assim:

Não só pode, mas melhor, porque você pode chamá-lo assim:

Se você passar um ponteiro por referência, você precisa de outra variável para o ponteiro.

***

E se você tem que passar um ponteiro para uma função para criar um objeto na função, é assim que ela funciona:

Isso é basicamente tudo o que você queria saber sobre o OOP, mas tinha medo de perguntar))))

Nuh-uh

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

E basta pensar desta forma, tudo funciona.

Portanto, se você tiver alguma dúvida sobre o OOP, sinta-se à vontade para ))))

 
Um clássico desreferenciamento de ponteiro nulo acabou se revelando.
 
Vladimir Simakov:

Portanto, se você tiver alguma dúvida sobre o OOP, sinta-se à vontade para ))))

Favor explicar o significado da criação de um objeto dinâmico usando o novo operador.

Quando um objeto é criado automaticamente, um objeto de classe é criado na pilha e é mais rápido que um objeto dinâmico em termos detempo de execução.
Quando um objeto é criado dinamicamente, o objeto de classe é criado na memória (na pilha) e o gerenciador de memória do SO é ativado, o processo é mais lento.

Aqui estão as perguntas:
Se a criação automática é mais rápida, então por que é melhor usar objetos dinâmicos?
Controlar explicitamente a alocação de memória?
Eliminar um possível transbordo de pilha?
E para não perder um objeto inesperadamente?
Porque se a pilha transbordar, o objeto será automaticamente apagado?

 
Roman:


Você não está cansado de acompanhar o assunto?

 
Artyom Trishkin:

Você não está cansado de acompanhar o assunto?

Ajustando as perguntas para serem tão precisas quanto possível.
Há algo de errado com isso? Há um botão de edição, para que você possa usá-lo para fazer um ponto de vista.

 
Roman:

Favor explicar o significado da criação de um objeto dinâmico com o novo operador.

Quando um objeto é criado automaticamente, o objeto de classe é criado na pilha, o que é mais rápido do que um objeto dinâmico em termos de tempo de execução.
Quando um objeto é criado dinamicamente, o objeto de classe é criado na memória (na pilha) e o gerenciador de memória do SO é ativado, o processo é mais lento.

Aqui estão as perguntas:
Se a criação automática é mais rápida, então por que é melhor usar objetos dinâmicos?
Controlar explicitamente a alocação de memória?
Eliminar um possível transbordo de pilha?
E para não perder um objeto inesperadamente?
Porque se a pilha transbordar, o objeto será automaticamente apagado?

Por que você não lê sobre memória estática, pilha e pilha?
 
Roman:

Favor explicar o significado da criação de um objeto dinâmico com o novo operador.

Um exemplo claro de uso é quando o tipo de objeto não é conhecido de antemão.

Aqui está um bom exemplo disso na ajuda: https://www.mql5.com/ru/docs/basis/operators/newoperator

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

Nuh-uh

Sim, exceto que tudo se compila e funciona por alguma razão.

Que tipo de milagres você tem lá... Ninguém sabe, mas, a propósito, não é surpreendente, depois das amostras de código de ontem supostamente retiradas de algum outro lugar neste tópico, mas na verdade faltando em algum outro lugar.

***

Ah, e caso você não tenha esquecido do que estávamos falando originalmente - sobre passar um ponteiro para uma função ou método (e sobre o que você alegou que algum vazamento de memória supostamente acontece lá), que é exatamente onde & não é necessário.


 
Roman:

Por favor, explique o propósito de criar um objeto dinâmico através do novo operador.

Quando um objeto é criado automaticamente, o objeto de classe é criado na pilha e é mais rápido que um objeto dinâmico em termos de tempo de execução.
Ao criar um objeto dinamicamente, um objeto de classe é criado na memória (na pilha), envolvendo assim o gerenciador de memória do SO, o processo é mais lento.

Aqui estão as perguntas:
Se a criação automática é mais rápida, então por que é melhor usar objetos dinâmicos?
Controlar explicitamente a alocação de memória?
Eliminar um possível transbordo de pilha?
E para não perder um objeto inesperadamente?
Porque se a pilha transbordar, o objeto será automaticamente apagado?

Se o número de objetos é conhecido antecipadamente e é constante durante a execução do programa, então não há necessidade de novos objetos. Em todos os outros casos - novo.

Razão: