Esta não é a primeira vez que me pego pensando que na MQL é melhor usar OOP somente quando absolutamente necessário e somente em uma determinada parte do código.
Pavel Verveyko: Esta não é a primeira vez que me pego pensando que na MQL é melhor usar o OOP somente em caso de necessidade urgente e somente em uma determinada seção de código.
Quem na terra lhe deu uma idéia tão estúpida? Se você não gosta de gatos, simplesmente não pode cozinhá-los))))
1) mas desconfio que o objetivo é "apagar e isto". - usar com métodos estáticos 2) ontem pesquisaram no Google este tópico, muitas referências ao destruidor privado, também precisam pensar no que ele pode proporcionar
1) A partir de métodos estáticos, o acesso a isto é proibido. Onde está "apagar e isto";" - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this
2) O destruidor privado não permite criar um objeto na pilha, mas um objeto ainda pode ser criado através do novo operador, desta vez na pilha:
class A{
~A(){printf(__FUNCSIG__);}
public:
void Delete(){
delete &this;
}
};
voidOnStart() {
A* a_ptr = new A();
a_ptr.Delete();
}
1) A partir de métodos estáticos, o acesso a isto é proibido. Onde fazer "apagar e isto;" - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this
2) Um destrutor privado proíbe a criação de um objeto na pilha, mas um objeto ainda pode ser criado através do novo operador, desta vez na pilha:
Aqui está um outro uso de apagar &isto.
Você sempre pode fazer algo com alguma coisa. Mas qual é o objetivo?
Você deve inventar um nome, declará-lo como um padrão de design. e é isso. É tão legal escrever um monte de código em vez de apenas "apagar algo".
Um destruidor privado protege seus empreendimentos de diletantes. Afinal de contas, você só pode usar o OOP com eles de uma forma madura - com novo e excluir. A propósito, você já pensou em um nome para o "padrão"?
Eu li em algum lugar e um exemplo apareceu no fórum com tal construção
alguém pode fazer um exemplo simples com isto?
Estou interessado no que esta exclusão &this deletes;
este é um ponteiro para o objeto atual.
Normalmente a eliminação desta construção é usada onde um objeto é criado por novo, mas a responsabilidade pela eliminação está sobre o próprio objeto. Neste caso, quando o objeto decide que não é mais necessário, ele chama a função de desinicialização, na qual ele se apaga assim.
Na minha opinião, esta é uma prática extremamente perigosa, aceitável apenas no caso de pontos inteligentes que contarão referências ao próprio objeto e então, quando o número de referências se torna zero, eles podem apagar a si mesmos. Mas mesmo neste caso, parece-me que há espaço para erros de vazamento de memória difíceis de encontrar.
Na minha opinião, a responsabilidade pela eliminação deveria recair sobre o mesmo objeto que o criou. Ele pode usar o padrão de fábrica do objeto ao criá-lo, mas a exclusão ainda deve ser de responsabilidade do objeto que criou o novo objeto.
Esta não é a primeira vez que me pego pensando que na MQL é melhor usar o OOP somente em caso de necessidade urgente e somente em uma determinada seção de código.
Eu li em algum lugar e um exemplo apareceu no fórum com tal construção
alguém pode fazer um exemplo simples com isto?
Estou interessado no que esta exclusão &this deletes;
Eu li em algum lugar e um exemplo apareceu no fórum com tal construção
alguém pode fazer um exemplo simples com isto?
Estou interessado no que esta exclusão &this deletes;
Ela se apaga))))
Ela se retira))))
que faz sentido
mas suspeito que o objetivo é usá-lo com métodos estáticos
necessidade de testá-lo, realmente não sei como, é por isso que eu perguntei
UPD: ontem no Google este tópico, muitas referências ao destruidor privado, também precisam pensar no que ele pode fazer
1) mas desconfio que o objetivo é "apagar e isto". - usar com métodos estáticos
2) ontem pesquisaram no Google este tópico, muitas referências ao destruidor privado, também precisam pensar no que ele pode proporcionar
1) A partir de métodos estáticos, o acesso a isto é proibido.
Onde está "apagar e isto";" - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this
2) O destruidor privado não permite criar um objeto na pilha, mas um objeto ainda pode ser criado através do novo operador, desta vez na pilha:
Aqui está um outro uso de apagar &isto.
1) A partir de métodos estáticos, o acesso a isto é proibido.
Onde fazer "apagar e isto;" - https://stackoverflow.com/questions/447379/what-is-the-use-of-delete-this
2) Um destrutor privado proíbe a criação de um objeto na pilha, mas um objeto ainda pode ser criado através do novo operador, desta vez na pilha:
Aqui está um outro uso de apagar &isto.
Você sempre pode fazer algo com alguma coisa. Mas qual é o objetivo?
Você deve inventar um nome, declará-lo como um padrão de design. e é isso. É tão legal escrever um monte de código em vez de apenas "apagar algo".
Eu li em algum lugar e um exemplo apareceu no fórum com tal construção
alguém pode fazer um exemplo simples com isto?
Estou interessado no que esta exclusão &this deletes;
este é um ponteiro para o objeto atual.
Normalmente a eliminação desta construção é usada onde um objeto é criado por novo, mas a responsabilidade pela eliminação está sobre o próprio objeto. Neste caso, quando o objeto decide que não é mais necessário, ele chama a função de desinicialização, na qual ele se apaga assim.
Na minha opinião, esta é uma prática extremamente perigosa, aceitável apenas no caso de pontos inteligentes que contarão referências ao próprio objeto e então, quando o número de referências se torna zero, eles podem apagar a si mesmos. Mas mesmo neste caso, parece-me que há espaço para erros de vazamento de memória difíceis de encontrar.
Na minha opinião, a responsabilidade pela eliminação deveria recair sobre o mesmo objeto que o criou. Ele pode usar o padrão de fábrica do objeto ao criá-lo, mas a exclusão ainda deve ser de responsabilidade do objeto que criou o novo objeto.