Un nouveau operateur en C++!

J'ai l'honneur de vous annoncer la naissance de <-,un opérateur tout nouveau en C++.

Un nouvel opérateur en C++!!!

Bon je dois avouer que je suis vraiment pas pour la redéfinition des opérateurs en c++... Quelques cas sont très utile,mais cela masque souvent le temps machine utilisé,produit des programmes plus lourd,c'est aussi une source d'erreur assez grande. Même les cas très "évident" comme les matrices, produisent au final un code assez mauvais,et caché derrière quelques signes,le programmeur le vois pas...

exemple typique:

matrice res,a,b,c;
res=a*b+c;

Cela produit un très très mauvais code (beaucoup trop de parcours de matrices)... Si ce cas arrive souvent,il serait mieux de faire une fonction special.

Donc bon,ce qui suit est plutôt un jeu de l'esprit,...

Le nouveau opérateur du C++ est:
<-
exemple d'utilisation:

stack pile;
int value;
pile<-value; // ajoute value dans la pile

A priori d'autre opérateur sont faisable si vous comprenez la bidouille, je pense a <++, <--, par exemple.

En fait la technique est très simple quand on connait le fonctionnement d'un compilateur, a<-b est en fait,une fois traduit en terme plus clair:
a.superieur(b.moinsUnaire());

donc pour avoir l'opérateur <- il suffit que - unaire renvoit une copie (ou référence,je vous laisse optimiser :) ) de b... cela donne (exemple très très simple):

class test
{
public:
int a;
const test& operator-() {return *this;};
void operator<(const test& arg) // l'operateur <- est en fait l'affectation,pour simplifier.
{
a=arg.a;
}
};

int main(int argc, _TCHAR* argv)

{
test a,b;
a.a=0;
b.a=25;
a<-b;
cout< return 0;
}

Et voila! un opérateur "<-" !

Et la: "c'est bien beau,mais je peux pu utiliser l'opérateur < normal! Cela reste possible car on peut utiliser plusieurs opérateurs <, par exemple un opérateur qui prends un "int" ou un "test". Il suffit donc de bidouiller un peu...Par contre le - unaire est perdu (si quelqu'un a la solution...) Donc on va faire un opérateur - qui prends un "test" en argument et renvoi un "testAux". il y aura donc deux opérateurs <, un qui prends un "test" et qui fait une comparaison "supérieur" normal, et une autre qui prends un "testAux" et fait l'opérateur "<-"!

Aucun commentaire: