Erros, bugs, perguntas - página 1892

 
fxsaber:
Outra questão.
O desempenho da banda de rodagem.
 
Renat Fatkhullin:
O trabalho de uma banda de rodagem.
se é uma piada, é engraçado )) e se não, por favor explique o que é uma banda de rodagem na programação
 
Konstantin:
por favor explique o que é um protector na programação
a coisa que fez desaparecer os descompactadores
 
Renat Fatkhullin:

Sim, aqui está um exemplo que demonstra a sua pergunta:

e produção:

Primeiro, verificamos o elenco não resolvido de baixo para cima e obtemos o NULL. Isto é correcto.

Depois criamos um objecto da CLASS2, atribuímos-lhe uma referência à sua classe mãe (aqui é importante compreender que dinamicamente o ambiente sabe que o tipo original do objecto da CLASS2 é armazenado na sua meta-informação). Em seguida (apenas a sua pergunta), fundido dinamicamente (com verificação do direito de conversão com base na metainformação do objecto fonte) da referência CLASSE1 para a CLASSE2.

Verificamos o resultado da fundição e escrevemo-lo na variável i = 1. Finalmente, produzimos o valor de i, referindo-se ao objecto originalmente criado.

Tudo funciona correctamente e de acordo com a especificação (incluindo a própria especificação dynamic_cast em C++).

Obrigado pelo esclarecimento. A conversão do tipo em MQL está agora mais ou menos clara)) Mas qual é o objectivo da criação de dynamic_cast se não podemos lançar de baixo para cima em qualquer caso e podemos fazer sem dynamic_cast de cima para baixo? Talvez haja aqui algumas subtilezas e eu não as entendo?
 
Konstantin:
Obrigado pelos esclarecimentos, consegui-o em MQL para conversão de tipo)) Mas não sei para que precisamos de dynamic_cast se não podemos lançar de baixo para cima de qualquer maneira e podemos fazer sem dynamic_cast de cima para baixo? Talvez haja aqui algumas subtilezas e eu não as entendo?

Volte a ler o código e a minha explicação, por favor.

Também demonstra como o elenco pode elevar o elenco de baixo para cima de forma dinâmica e segura, com base na meta-informação do objecto originalmente criado. Se um objecto foi criado a partir de um descendente, então convertido numa referência de classe mãe, então com base na metainformação (o objecto original é na realidade um descendente) pode converter com segurança essa referência a um descendente.

Tipicamente utilizado quando os objectos de vários descendentes são empilhados numa matriz/lista de referências à classe mãe, e depois recuperados e lançados em segurança para um ou outro descendente. Se a conversão der NULL, isso significa que o objecto não é buscado pelo descendente e não deve ser manuseado.

 
Renat Fatkhullin:

Volte a ler o código e a minha explicação, por favor.

Também demonstra como o elenco pode elevar o elenco de baixo para cima de forma dinâmica e segura, com base na meta-informação do objecto originalmente criado. Se um objecto foi criado a partir de um descendente, então convertido numa referência de classe mãe, então com base na metainformação (o objecto original é na realidade um descendente) pode converter com segurança essa referência a um descendente.

Tipicamente utilizado quando os objectos de vários descendentes são empilhados numa matriz/lista de referências à classe mãe, e depois recuperados e lançados em segurança para um ou outro descendente. Se a conversão der NULL, então o objecto não é buscado por descendente e não precisa de ser processado.

Eu li o código, mas não é isto:

CLASS2 *my_ptr2=dynamic_cast<CLASS2 *>(my_ptr);

não é análogo a isto:

CLASS2 *my_ptr2=(CLASS2*)my_ptr;

Não consigo perceber a subtileza da utilização do dynamic_cast, excepto que ao executar código utilizando o dynamic_cast não iremos obter um erro porque o dynamic_cast retorna NULL em caso de erro

 
Konstantin:

Eu li o código, mas não é isto:

não é semelhante a isto:

Não consigo perceber a grande subtileza da utilização do dynamic_cast, excepto que não obteremos um erro ao executar código utilizando o dynamic_cast porque o dynamic_cast retorna NULL em caso de erro

Recomendo a leitura da especificação C++ dymanic_cast no google.

É uma coisa trivial.

 
Quando se distribuem recursos de PC em cludes, quando se inicia o jogo - o jogo"Call of Duty: BlackOpsIII" cai - 1 agente estava envolvido. A prioridade dos agentes era mínima - a memória consumia 3,5 gigabytes de 16 - em geral não deveria haver problemas. Com agentes não activos, o jogo jogava bem. Já alguma vez testou a compatibilidade dos agentes com outros programas?
 
-Aleks-:
Quando se distribuem recursos de PC em cludes, quando se inicia o jogo - o jogo"Call of Duty: BlackOpsIII" cai - 1 agente estava envolvido. A prioridade do agente era mínima - a memória consumia 3,5 gigabytes de 16 - em geral não deveria haver problemas. Com agentes não activos, o jogo jogava bem. Geralmente testado sobre a compatibilidade dos agentes com outros programas?

Por alguma razão pensei imediatamente que talvez o bug no jogo e liguei-o às peculiaridades do trabalho em máquinas de 64 bits quando o programa é carregado no espaço de endereços > 4 GB
 
Sergey Dzyublik:

Por alguma razão surgiu imediatamente a ideia de que talvez um bug no jogo e o ligou às peculiaridades de trabalhar em máquinas de 64 bits, quando o programa é carregado no espaço de endereçamento > 4 GB

Isto é, para verificar esta hipótese preciso de encher a RAM com mais de 4 gigabytes e correr o jogo - vou tentar quando o meu filho o jogar.