Perguntas sobre OOP em MQL5 - página 89

 
Se a estrutura tiver um campo, tudo bem. Se houver mais, é inútil e até mesmo bobo.
 
Dmitry Fedoseev:
Se a estrutura tiver um campo, tudo bem. Se houver mais, é sem sentido e até mesmo estúpido.

Quem gostaria de ter uma estrutura de campo único? Como esta "estrutura" ajuda?

 
Mikhail Dovbakh:

Quem gostaria de ter uma estrutura de campo único? Como essa "estruturação" ajuda?

invólucro da estrutura sobre uma matriz

A MQL não pode lidar com apontadores, mas pode lidar com estruturas sem restrições, então você tem que embrulhar uma matriz em uma estrutura

 
Igor Makanu:

invólucro da estrutura sobre uma matriz

A MQL não pode lidar com ponteiros, mas pode lidar com estruturas sem qualquer limitação, então temos que envolver uma matriz em uma estrutura

Não seria mais fácil envolvê-lo em uma aula? Ainda assim, a estrutura é, antes de tudo, uma vantagem quando se trabalha com uma lista de dados estáticos. Além disso, quando se trabalha com uma estrutura dinâmica, não é conveniente aterrá-la mais tarde.

 
Alexandr Andreev:

Não seria mais fácil embrulhá-lo em uma classe? Uma estrutura é principalmente uma vantagem quando se trabalha com uma lista estática de dados. E quando se trabalha com uma estrutura dinâmica, não é conveniente aterrá-la.

é mais simples em

E para evitar a multiplicação de tipos, fiz uma classe que descreve a seção pública da estrutura, utilizando estes tipos parcialmente fora da classe,

usá-los como estruturas normais, a única coisa é mais colons, mas não vou dizer que isso me incomoda

 
Mikhail Dovbakh:

Quem gostaria de ter uma estrutura de campo único? Como esta "estrutura" ajuda?

Isso foi um... como se chama... tese retórica))

Entretanto, às vezes pode ser útil colocar uma matriz em uma estrutura e depois usar uma matriz dessas estruturas.

 
Funciona bem. Há apenas uma coisa. Quando uma estrutura é retornada de uma função, não é a estrutura criada dentro da função que é retornada, mas uma cópia desta estrutura, ou seja, uma cópia implícita do construtor é iniciada.
 
Vladimir Simakov:
Funciona bem. Há apenas uma coisa. Quando a estrutura é devolvida da função, não é a estrutura criada dentro da função, mas uma cópia desta estrutura, ou seja, o construtor de cópias implícitas é lançado.
Não há cópia desnecessária, a estrutura é criada na pilha e o campo necessário é copiado da mesma.
 
Aliaksandr Hryshyn:
Não há cópia desnecessária, a estrutura é criada na pilha e o campo necessário é copiado da mesma.
Isto se o compilador o otimiza. Mas, caso contrário, ao chamar f(), o seguinte acontecerá. O ponteiro no topo da pilha é deslocado pelo tamanho da estrutura (o resultado será devolvido aqui). O código de função sobe na pilha. Além disso, no processo de execução, chegamos à declaração da estrutura. O ponteiro da pilha muda novamente para seu tamanho. É esta estrutura que é preenchida com a função. Antes da saída da função, a memória alocada para a estrutura na função é copiada para a memória alocada para o retorno.
 
Vladimir Simakov:
Isto se a cooperativa de compilação for otimizada. Caso contrário, quando f() for chamado, acontecerá o seguinte. O ponteiro do nó de pilha é deslocado para o tamanho da estrutura (é aqui que o resultado será devolvido). O código de função sobe na pilha. Além disso, no processo de execução, chegamos à declaração da estrutura. O ponteiro da pilha muda novamente para seu tamanho. É esta estrutura que é preenchida com a função. Antes da saída da função, a memória alocada para a estrutura na função é copiada para a memória alocada para o retorno.
O mais provável é que ela a otimize.