Conversando sobre a OLP no salão - página 16

 
Vasiliy Sokolov:

Em linguagens de programação normais(não C++),é proibida a sobrecarga do operador '='.

Uma linguagem normal é sua Sharp? E o único que você conhece? Também é uma droga, senão você não estaria dizendo coisas como "as interfaces não são herança".

Você sabe, o = operador está lá, não como um açúcar, mas como um operador. E na MQL ele está lá -- gerado automaticamente, vai figura!

E o fato de que na MQL o construtor de cópias é muito mais conveniente do que aquele que você escreveu, eu nem preciso lhe falar sobre isso. Você era um boneco há alguns anos e ainda é. Você acabou de impulsionar seu ego com caras como Denisa.

 
Комбинатор:

...Você acabou de ter seu ego impulsionado por pessoas como Denis.

Você não pode me colocar em detalhes, então agora você está ligando o resto do fórum. Má e desprezível.

(Nota: ele colocou os outros na terceira pessoa e com uma letra pequena, ou seja, sem respeito e "vocês são todos nobres aqui")

 
Vasiliy Sokolov:

Em linguagens de programação normais(não C++), asobrecarga do operador '=' é proibida.

É muito conveniente para mim, especialmente quando uso extensivamente o modelo, que seja possível sobrecarregar este operador. Eu também a sobrecarrego em muitas outras situações.

E alguns operadores sobrecarregados são quase completamente proibidos em algumas línguas, porque é completamente merecido lá como um anti-padrão. Sugiro que antes de usar qualquer sobrecarga desse tipo, especialmente o operador de atribuição, deve-se pensar bem no motivo pelo qual esses arquitetos tolos dessas línguas idiotas fazem isso.

Um exemplo clássico de sobrecarga do operador são números e matrizes complexas. Não vejo nada de errado com isso. Eu estou sempre escrevendo operadores porque o código não é mais incômodo e você pode ver a lógica imediatamente.


O mais simples

struct MQLTICK : public MqlTick
{
  bool operator >( const double Price ) const
  {
    return(this.bid > Price);
  }

  bool operator <( const double Price ) const
  {
    return(this.ask < Price);
  }
};
 

Vasiliy Sokolov e Combinator, por favor, pare de praguejar.

Caso contrário, teremos que banir Volchanski como provocador :)

 
Vasiliy Sokolov:

Você não pode me colocar em detalhes

você não precisa de mais detalhes? )) Escrever código charp-code com atribuição? Ou me mostrar como escrever uma cópia-construtora? Ou listar idiomas com operadores de atribuição? Falar sobre falta de especificações e fazer falsas acusações contra mim é muito mais fácil do que admitir que você está cheio de merda
 
Rashid Umarov:

Ou então teremos que proibir Wolchansky como provocador :)

Não, quem vai contar as histórias? Eu prefiro ser o instigador.

 
Vasiliy Sokolov:

Não vou ser provocado por detratores analfabetos e é melhor explicar meu ponto de vista:

Em linguagens normais de programação(não C++)é proibida a sobrecarga de '=' operador. E em alguns a sobrecarga de operadores é quase completamente proibida, porque lá é completamente merecida como anti-padrão. Eu sugiro que antes de usar qualquer sobrecarga desse tipo, especialmente os operadores de tarefas, aqueles que desejam, pensem bem no porquê desses arquitetos idiotas dessas línguas idiotas fazem isso.

E por que são estas "linguagens de programação normais" ?

A sobrecarga do operador da tarefa é muito útil em muitos casos. O exemplo clássico são os "indicadores inteligentes". O operador da tarefa não só deve copiar um ponteiro, mas também fazer AddRef() - com sobrecarga, tudo isso é feito de forma transparente.

Por que é conveniente? Porque faz muito mais sentido copiar apontadores do que objetos inteiros. (E com uma cópia intensiva em diferentes lugares do programa é difícil ver, se o objeto é necessário ou não. Neste caso, os smartpoints são muito úteis.

Claro, existem coisas como "coletor de lixo" - mas eu gosto menos desta variante, precisamente porque os ponteiros têm pleno acesso às referências e à contagem de cópias, enquanto que o coletor de lixo não tem. Sem mencionar que os indicadores destroem o objeto assim que ele não é mais necessário, enquanto o catador de lixo trabalha com algum atraso.

 
George Merts:

Claro, há coisas como "coletor de lixo" - mas eu gosto menos dessa opção, justamente porque os ponteiros têm pleno acesso à referência e à contagem de cópias, enquanto o coletor de lixo não tem. Sem mencionar que os indicadores destroem o objeto assim que ele não é mais necessário, enquanto o catador de lixo trabalha com algum atraso.

Uh-huh, GC, mesmo que executado à força, nem sempre apaga tudo. Às vezes isso se torna um problema.
 
Vasiliy Sokolov:

Não vou ser provocado por detratores analfabetos e é melhor explicar meu ponto de vista:

Em linguagens normais de programação(não C++)é proibida a sobrecarga de '=' operador. E, em alguns, a sobrecarga do operador é quase completamente proibida, pois ali é merecidamente considerada anti-padrão. Sugiro que antes de usar qualquer sobrecarga, especialmente o operador de tarefas, aqueles que o desejarem, pensem bem no porquê desses estúpidos arquitetos dessas estúpidas linguagens fazem isso.

Não podia resistir, pessoalmente a andrei: cara, não se envergonhe dessa maneira. Você está dizendo coisas tão bobas: primeiro sobre FP, agora sobre operadores. Desejar hayterite - bem-vindo: dar referências a fontes confiáveis, justificar, etc. O que você está fazendo agora é um ódio raivoso e, o mais importante, totalmente analfabeto. Você parece ser um programador, como um programador de verdade - é vergonhoso escrever tais coisas.


Vasily, é desejável especificar os nomes dos idiomas. As frases "em normal", "em alguns", "estes" não acrescentam credibilidade ao que está sendo dito. Somos programadores, não listas brancas, portanto, sejamos específicos em nossas declarações.

 
Yuriy Asaulenko:
Uh-huh, a GC, mesmo quando alimentada à força, nem sempre apaga tudo. Às vezes isso se torna um problema.

Se ele pensa que o objeto é provável que seja criado novamente em breve, ele não o removerá.

Razão: