![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Vamos lá! Eu a uso o tempo todo.
Onde? Em que lugar e como?
Moderadores, desculpem por repetir a pergunta. Eu realmente quero ter uma resposta para isso.
Por que você reatribuiria intencionalmente um ponteiro passado para uma função? É claro, haverá um vazamento. Mas isto não é um "vazamento clássico", mas um erro clássico de trabalhar com um ponteiro para um objeto.
Você não precisa criar um novo objeto aqui, mas manipular o objeto externo para o qual o ponteiro foi passado para a função.
Onde? Em que lugar e como?
Moderadores, desculpem por repetir a pergunta. Eu realmente quero ter uma resposta para isso.
Onde? Em que lugar e como?
Moderadores, desculpem por repetir a pergunta. Eu realmente quero ter uma resposta para isso.
Se entendi corretamente a pergunta, declaramos a classe como um objeto usando novo.
Em seguida, use um ponto para chamar os métodos públicos da classe através do objeto criado.
Depois que todos os métodos chamados são executados, apagamos a memória apagando o objeto criado.
Se entendi a pergunta corretamente, declaramos a classe como um objeto usando novo.
Então chamamos os métodos públicos da classe através do objeto criado, usando um ponto.
Depois que todos os métodos chamados são executados, apagamos a memória apagando o objeto criado.
Não. No início pensei que era um parâmetro de função como este - objeto, mas não por referência, mas há um ponto-e-vírgula no final. Se é uma criação de objeto normal na declaração, então por que está entre parênteses? Portanto, por enquanto, continua sendo o mistério do século.
Não. No início pensei que era um parâmetro de função como este - objeto, mas não por referência, mas há um ponto-e-vírgula no final. Se é uma criação de objeto normal na declaração, então por que está entre parênteses? Portanto, por enquanto, continua sendo o mistério do século.
E por que você deliberadamente reatribuiu um ponteiro passado para uma função? É claro, haverá um vazamento. Mas não é um "vazamento clássico", mas um erro clássico de manipulação de um ponteiro para um objeto.
Não é necessário criar um novo objeto aqui, mas manipular o objeto externo para o qual o ponteiro foi passado para a função.
Não se trata do meu exemplo, trata-se da implementação dos próprios ponteiros na MQL - se você não precisar desreferenciá-los (e o ponteiro pode ser atribuído a uma instância do objeto!), se ao invés de passar um ponteiro você pode passar uma referência ao objetohttps://www.mql5.com/ru/forum/1111/page2471#comment_11796665
aqui não temos informações detalhadas sobre onde e quando (CObj& obj) apareceu (& não é uma operação de desreferenciamento de ponteiro, mas a aquisição de um ponteiro GetPointer() )
Ok, eu não quero desperdiçar nenhuma informação... Eu já disse a mim mesmo, e vou repetir mais uma vez neste fórum - MQL não é C++, é assim que é implementado - bem, eu não tenho outras opções
Não se trata do meu exemplo, trata-se da implementação dos próprios ponteiros na MQL - se você não precisar desreferenciá-los (e o ponteiro pode ser atribuído a uma instância do objeto!), se ao invés de passar um ponteiro você pode passar uma referência ao objeto https://www.mql5.com/ru/forum/1111/page2471#comment_11796665
aqui não temos informações detalhadas sobre onde e quando (CObj& obj) apareceu (& não é uma operação de desreferenciamento de ponteiro, mas a aquisição de um ponteiro GetPointer() )
Ok, eu não quero desperdiçar nenhuma informação... Eu já disse a mim mesmo, e vou repetir mais uma vez neste fórum - MQL não é C++, é assim que é implementado - bem, eu não tenho outras opções
Você está sendo dramático, não há complexidades e confusões.
Os parênteses são porque esta é uma nota sobre o texto))))
Então, aí está.
Assim:
void z(CObj * o){ }
Não só pode, mas melhor, porque você pode chamá-lo assim:
z(GetPointer(obj));
Se você passar um ponteiro por referência, você precisa de outra variável para o ponteiro.
***
E se um ponteiro precisa ser passado 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))))