Características da linguagem mql5, subtilezas e técnicas - página 215
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
A propósito, se criarmos uma matriz estática X x[n]; e X tem um k-tor, então todos os campos de elementos nela serão zerados primeiro, mesmo privados, e só então o k-tor será chamado. Portanto, não há violação do paradigma OOP em zeragem de campos privados.
Mas o facto de o construtor não ter trabalhado é um insecto.
A propósito, se se opuser um array estático X x[n]; e X tem um k-tor, então todos os campos de elementos nele serão zerados primeiro, mesmo privados, e só então o k-tor será chamado. Portanto, não há violação do paradigma OOP em zeragem de campos privados.
Isso é óptimo. Assim, acontece que a zeragem vem ANTES do construtor, e portanto tudo está correcto. Obrigado!
Olhei para a minha pesquisa na MQL5, poderia ser pior, até bombeei a história no indicador por várias TFs:
Posso escrever um monte de coisas numa declaração ))))
Nunca me deparei com uma chamada de declaração de função nula. Tenho visto com bastante frequência outras variantes.
Esqueci-me de acrescentar, se uma classe tiver campos não triviais (objectos), então após zero-init o objecto inteiro para tais campos será chamado o seu c-tor predefinido.
Ler:
Os efeitos da inicialização de valores são:
Leia sobre a inicialização por defeito:
UB!
O facto de o compilador o inicializar com zeros, não significa nada, hoje inicializa-se, e amanhã, após a próxima actualização....
Ler:
Os efeitos da inicialização de valores são:
Leia sobre a inicialização por defeito:
UB!
O facto de o compilador o inicializar com zeros, não significa nada, hoje inicializa-se, e amanhã, após a próxima actualização....
O meu post "Esqueci-me de acrescentar...." foi escrito como um suplemento ao post anterior:
Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais
Peculiaridades da linguagem mql5, dicas e truques
mktr8591, 2021.11.18 18:15
@A100
Se se lembrar que o mql foi gerado a partir de C++, ambos os exemplos (os seus homólogos) funcionam bem lá porque não há construtores nestas classes (ou seja, há um construtor implícito):
Exemplo em C++:
Portanto, se não existem campos constantes na estrutura/classe, então a lógica é correcta.
Tratou de uma determinada situação - quando uma classe não tem construtores utilizadores e há um construtor implícito que não é apagado. Neste caso, o ponto 1 citado por si não é apropriado.
Ponto"2) se T é um tipo de classe com um construtor padrão que não é fornecido pelo utilizador nem apagado (ou seja, pode ser uma classe com um construtor padrão implicitamente definido ou por defeito), o objecto ézero-inicializado e as restrições semânticas para a inicialização por defeito são verificadas, e se T tiver um construtor por defeito não trivial, o objecto éinicializado por defeito;".
Portanto, tudo se encaixa.
Ler:
Os efeitos da inicialização de valores são:
Leia sobre a inicialização por defeito:
UB!
O facto de o compilador o inicializar com zeros, não significa nada, hoje inicializa-se, e amanhã, após a próxima actualização....
Oops. lê-lo mal. Neste caso:
2) se Té um tipo de classe com um construtor padrão que não é fornecido pelo utilizador nem apagado (ou seja, pode ser uma classe com um construtor padrão implicitamente definido ou por defeito), o objecto ézero-inicializadoe as restrições semânticas para a inicialização por defeito são verificadas, e se Ttiver um construtor por defeito não trivial, o objecto éinicializado por defeito;Óptimo. Acontece que a zeragem vem ANTES do construtor, por isso tudo está correcto. Obrigado!
Não tenho visto uma chamada de função nula numa declaração. As outras variantes são bastante comuns.
Pode escrever o que quiser no 3º parâmetro de para declaração, de facto, para declaração pode substituir se() declaração por {.....}.
SZZ: Também já vi macros como
Pode escrever o que quiser no 3º parâmetro do for statement, de facto, o for statement pode substituir o if() pelo {.....}.
SZZ: Também já vi macros como
Tirar o ponto-e-vírgula, caso contrário perde-se todo o sentido))))
Retire o ponto e vírgula, caso contrário todo o significado é perdido))))
sim, certo - este exemplo em macros para colocar; ao chamar uma macro, eu não uso muito macros - nenhuma prática