Pergunta datilografada - página 5

 
Ilya Malev:
P.S., ah, ou seja, você queria sobrecarregar um operador binário como unário (2-binários como 1-binário), então sim, claro que não era uma data. A única exceção é [].

Sim, em MQL é rigidamente prescrito o que e como sobrecarregar, em C++, não importa o que sobrecarregar, você o chamará da mesma forma - se você sobrecarregar ^ como unário, você o usará como unário no futuro

 
Igor Makanu:

Sim, na MQL é estritamente especificado o que e como sobrecarregar, em C++ não importa o que sobrecarregar, você pode chamá-lo da mesma forma - você sobrecarrega ^ como unário e você usará unário no futuro.

Sim, parece que ainda há muitas limitações em mql, portanto há espaço para melhorias :)

Eu também não me importaria com a possibilidade de sobrecarregar as operações binárias como unárias (e vice versa).

Uma vez que, de qualquer forma, quando sobrecarregam seu significado original é muitas vezes perdido, respectivamente, a lógica de uso não está mais associada a este significado. Seria lógico permitir isso.

 
Ilya Malev:

Sim, parece que ainda há muitas restrições em mql, há espaço para melhorias :)

Há muitas, e essas limitações aparecem, depois desaparecem, depois cinco... parece que os desenvolvedores às vezes mudam o ambiente de desenvolvimento ))))

Como exemplo, no Help, na seção operações de sobrecarga (operador) não são compilados exemplos de trabalho com matrizes, embora eu saiba que elas costumavam funcionar, agora há uma verificação do tipo de parâmetros que participam da sobrecarga das operações, ou seja, se eu tiver

int operator*(const int) então int operator*(int) não compilará e houve tal exemplo na ajuda, que parou de compilar

 
Ilya Malev:

Caros programadores, há muito tempo eu tenho me intrigado com uma pergunta. É possível, de alguma forma, contornar e fazer uma digitação implícita do valor de retorno da função? Para que o método de classe devolvesse um valor de um tipo diferente com a identidade externa de chamar os métodos.

E posso perguntar: para que fins você precisa disso? Você não pode construir uma nave estelar sem ela?

 
Vasiliy Sokolov:

Posso perguntar para que você precisa dele? Você não pode construir uma nave estelar sem ela?

E posso perguntar: Qual é o seu interesse nisso?

 

E, a propósito, não é nem mesmo uma sobrecarga do tipo retorno.

Em geral, esta idéia está muito longe de ser viável.

 
Vasiliy Sokolov:

Posso perguntar para que você precisa dele? Você não pode construir uma nave estelar sem ela?

No início, eu também era crítico, mas depois pensei que poderia usá-lo para mim mesmo também:

class Point {
public:
   double price;
   long time;
   operator double()const {return price;}
   operator long()const {return time;}
};

class Array {
   Point p[3] = {{0,1}, {2,3}, {4,5}};
public:
   const Point &operator[](unsigned i) {return p[i];}
};

void start()
{
   Array a;
   double d = a[2];  // d == 4
   long t = a[2];    // t == 5
}
 
Dmitry Fedoseev:

E, a propósito, não é nem mesmo uma sobrecarga do tipo retorno.

Capitão Obvious to the resque?

 
Ilya Malev:

Capitão Obvious to the resque?

Shift+Alt se você tiver esquecido.

 
C# tem conversões explícitas e implícitas. Parece ser um açúcar conveniente, mas muito implícito e o IntelliSense ficará em silêncio. Em um mês, você esquecerá qual classe pode ser convertida em qual. Um jogo OOP em geral, mas agradável.
Razão: