Question sur la dactylographie - page 5

 
Ilya Malev:
P.S., ah, c'est-à-dire que vous vouliez surcharger un opérateur binaire comme un opérateur unaire (2-binaire comme 1-binaire), alors oui, bien sûr pas une date. La seule exception est [].

Oui, dans MQL, il est prescrit de manière rigide ce qui doit être surchargé et comment, en C++, cela n'a pas d'importance, vous l'appellerez de la même manière - si vous surchargez ^ comme unaire, vous l'utiliserez comme unaire dans le futur.

 
Igor Makanu:

Oui, dans MQL, il est strictement spécifié quoi et comment surcharger, en C++, cela n'a pas d'importance, vous pouvez l'appeler de la même manière - vous surchargez ^ comme unaire et vous utiliserez unaire dans le futur.

Oui, il semble qu'il y ait encore beaucoup de limitations dans mql, donc il y a de la place pour des améliorations :)

J'aimerais également avoir la possibilité de surcharger les opérations binaires en opérations unaires (et vice versa).

Puisque de toute façon, lors de la surcharge, leur signification originale est souvent perdue, respectivement, la logique d'utilisation n'est plus associée à cette signification. Il serait logique de l'autoriser.

 
Ilya Malev:

Oui, il semble qu'il y ait encore beaucoup de restrictions dans mql, il y a place à l'amélioration :)

Il y en a beaucoup, et ces limitations apparaissent, puis disparaissent, puis cinq... il semble que les développeurs changent parfois l'environnement de développement ))))

Par exemple, dans l'aide, dans la section surcharge des opérations (opérateur), les exemples de travail avec des matrices ne sont plus compilés, alors que je sais qu'ils fonctionnaient auparavant, il y a maintenant une vérification du type de paramètres impliqués dans la surcharge des opérations, c'est-à-dire que si j'ai

int operator*(const int) then int operator*(int) ne compilera pas et il y avait un tel exemple dans l'aide, qui a arrêté la compilation

 
Ilya Malev:

Chers programmeurs, une question me taraude depuis longtemps. Est-il possible de faire en sorte que la valeur de retour d'une fonction soit implicitement typée ? De sorte que la méthode de la classe renvoie une valeur d'un type différent avec l'identité externe de l'appel des méthodes.

Et puis-je demander : à quelles fins en avez-vous besoin ? On ne peut pas construire un vaisseau sans ça ?

 
Vasiliy Sokolov:

Puis-je savoir pourquoi vous en avez besoin ? On ne peut pas construire un vaisseau sans ça ?

Et puis-je demander : quel est votre intérêt pour ce sujet ?

 

Et d'ailleurs, ce n'est même pas une surcharge du type de retour.

En général, cette idée est très loin d'être réalisable.

 
Vasiliy Sokolov:

Puis-je savoir pourquoi vous en avez besoin ? On ne peut pas construire un vaisseau sans ça ?

J'étais également critique au début, mais ensuite j'ai pensé que je pourrais l'utiliser pour moi aussi :

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:

Et d'ailleurs, ce n'est même pas une surcharge du type de retour.

Captain Obvious à la resque ?

 
Ilya Malev:

Captain Obvious à la resque ?

Shift+Alt si vous avez oublié.

 
C# dispose de conversions explicites et implicites. Cela semble être un sucre pratique, mais très implicite et IntelliSense sera silencieux. En un mois, vous aurez oublié quelle classe peut être convertie en quoi. Un jeu OOP en général, mais sympa.
Raison: