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
Refiro-me ao número de aulas. Cada uma tem 200 linhas de comprimento.
Quanto mais difícil seria o acesso? Eu tenho um núcleo global que é visível de todos os lugares. No OOP eu teria que desistir. Como eu trabalharia então com elementos em janelas? Eu fico em coma quando tento imaginar isso)).
Classe estática.
Vladimir Simakov:
А теперь к эффективности. Switch - это что в конечном итоге? Это последовательное сравнение параметра с константами. Внимание Петр, последовательное.
não é de todo necessário.
Isto não significa que Peter esteja certo ou que o interruptor deva ser colocado em todos os lugares, mas mesmo assim.
Sim, isso mesmo,então em termos de velocidade, é obviamente a opção mais rápida na MQL. Mas o acesso aosobjetos de classe no ambiente administrado é indireto.
É isso mesmo, mais sobre esta função. Você tem um interruptor de tamanho monstruoso que seleciona uma de uma dúzia de funções necessárias. Em tal mudança, é muito fácil cometer um erro ao escrever acidentalmente o código relativo a uma das filiais no lugar errado.
As coisas são muito mais simples com uma sobrecarga. Temos dez descendentes diferentes, e cada vez que trabalhamos com UMA classe, e ela tem UMA função sobrecarregável. Não podemos escrevê-lo acidentalmente em outra classe, porque temos que abrir um arquivo completamente diferente para ele.
Além disso - a própria análise nesta enorme mudança é, em minha opinião, muito mais estressante do que abrir a única classe que precisamos, e depois analisar apenas uma função.
De fato, em código de montagem, todo o manuseio deste interruptor se resume, de qualquer forma, ao mesmo swich, dependendo deste ponteiro. Mas no caso do OOP, tudo isso é escondido do programador e não interfere em seu trabalho. Sem OOP - você tem que lidar com isso.
Grosso modo, quando você caminha - você acaba enviando sinais aos seus músculos em uma certa seqüência que os move. No entanto, no nível de consciência - basta lembrar qual movimento fazer. Aqui, OOP é exatamente esse tipo de "memória de que movimento fazer". Você "não entende porque precisamos lembrar do movimento quando temos um monte de músculos, e nervos ligados a eles"... bem... Já disse muitas vezes antes, para os titãs de memorização, é realmente suficiente lembrar quais músculos têm que ser tensionados em que seqüência ir. Não vale a pena lembrar de todo o movimento. Para outros, que não conseguem se lembrar de tanto, é muito mais razoável lembrar de todo o movimento, e o que há com os músculos, em que seqüência eles são tensionados e até que ponto - é mais razoável escondê-lo da mente.
As funções sobrecarregadas são apenas funções diferentes das do compilador, e sem interruptores.
Quanto mais difícil seria o acesso? Eu tenho um núcleo global que é visível de todos os lugares. No OOP eu teria que desistir. Como trabalhar com elementos em janelas então? Eu fico em coma quando tento imaginar isso)).
Por que isso deveria ser?
O kernel global e o OOP não são mutuamente exclusivos.
Apenas os elementos das janelas devem ser encapsulados dentro das classes de janelas, e não "Colocados sobre a vista". Só para que ninguém possa acidentalmente "entrar no lugar errado". Alterar uma variável e cometer um erro sobre sua localização dentro de uma enorme matriz global é muito fácil, enquanto é muito mais difícil consultar a interface correta e depois alterar a mesma variável no objeto certo e cometer um erro.
As funções sobrecarregadas para o compilador são simplesmente funções diferentes, e sem interruptor.
E como é selecionado aquele que é necessário? Estamos falando de funções virtuais e encadernação tardia. Qual função sobrecarregada será chamada ? Isto é determinado por este ponteiro, que é passado implicitamente quando você o chama. E como você acha que essa escolha é feita?
E como é selecionado aquele que queremos? Estamos falando de funções virtuais e encadernação tardia. Qual função sobrecarregada será chamada ? Isto é determinado por este ponteiro, que é implicitamente passado para a chamada. E como você acha que essa escolha é feita?
Na verdade, Peter não estava falando de funções virtuais.
Mas eles também não têm interruptores.
Uma classe que tem funções virtuais tem uma tabela de funções virtuais.
E cada objeto desta classe contém uma variável implícita - um ponteiro para a tabela de funções virtuais.
Se uma ou todas as funções virtuais são anuladas no descendente, uma nova tabela é criada e as instâncias do descendente contêm um ponteiro para ela.
Na verdade, Peter não estava falando de funções virtuais.
Mas eles também não têm interruptores.
Uma classe que tem funções virtuais tem uma tabela de funções virtuais.
E cada objeto desta classe contém uma variável implícita - um ponteiro para a tabela de funções virtuais.
Se uma ou todas as funções virtuais são anuladas no descendente, uma nova tabela é criada e as instâncias do descendente contêm um ponteiro para ela.
Exatamente. Como funciona esta mesma tabela? Em código assembler, é a mesma chave.
E sobre "não falar de funções virtuais" - é como "por que OOP"... Ou seja, trata-se de funções virtuais, e não de simples nomes idênticos de funções com argumentos diferentes.
Exatamente. Então minha pergunta é: como funciona esta mesma tabela? Em código de montador é a mesma chave.
Não. É apenas um conjunto de indicações para uma função.
O código de montagem toma um endereço de tabela do objeto.
Ele toma o endereço da função em uma determinada posição.
E um salto para esse endereço é feito.
Que tal "eu não estava falando de funções virtuais" - era isso que eu queria dizer com "por que OOP"... Ou seja, trata-se de funções virtuais, não apenas nomes de funções idênticas com argumentos diferentes.
Julgando por sua pergunta, ele estava falando de funções com nomes idênticos.
É muito provável que ele não esteja nem mesmo ciente das funções virtuais.