operator

Operator-Überlagerung 1

Die Operator-Überlagerung ist ein sehr schönes Merkmal. Es ist sehr praktisch in manchen Fällen. Hier ist es der Operator ++.

//zaehlop.cpp
#include <iostream>

using namespace std;
class Zaehler
{
    private:
        unsigned int zaehl;
    public:
        Zaehler() {    zaehl=0; }
        int liesZaehler() { return zaehl; }
        void operator ++() { zaehl++; }   
};//class

int main()
{
    Zaehler z1, z2;
    cout << "Erster Zaehler: " << z1.liesZaehler();
    cout << endl << "Zweiter Zaehler: " << z2.liesZaehler();
    ++z1;
    ++z2;
    ++z2;
    cout << endl << "Erster Zaehler jetzt: " << z1.liesZaehler();
    cout << endl << "Zweiter Zaehler jetzt: " << z2.liesZaehler();
    return 0;
}//main()


Operator-Überlagerung 2

Hier nun ist der Operator == überlagert. Weil es eine logische Funktion ist, wird ein Wahrheitswert zurückgegeben. Dies kann sehr gut mit bool programmiert werden.

//xgleichy.cpp 08. 03. 2016
#include <iostream>//cout, cin

using namespace std;

class Gleich
{
 private:
   int zahl;
 public:
   void get()
    {
        cout << "Gib eine ganze Zahl ein: ";
        cin >> zahl;
    }
   bool operator == (Gleich gg)
   {
      return zahl==gg.zahl;
   }
};//class

int main()
{
    Gleich g1, g2;
    g1.get();
    g2.get();
    if (g1 == g2) //ueberlagertes ==
     cout << "Sind gleich";
    else cout << "Nicht gleich";
    cin.sync();
    cin.get();
    return 0;
}



//mindop.cpp Stand: 9. 1. 2016 mit einer Klasse
//und operator ==
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

const int RATEREIHE=4;
const int MAX=6;

class Mind
{
    private:
        int mi;
    public:
        Mind(){    }
        Mind(int mind){ mi=mind;}
        void print() { cout << mi; }
        void get() { cin >> mi; }
        bool operator ==(Mind ma)
         {
             return (mi==ma.mi)?true:false;
         }
}; //class

int main()
{
   Mind geraten[RATEREIHE];
   Mind geheim[MAX]= {1,2,3,4,5,6};
   cout << "Mastermind   4 von 6:            Die 9 beendet das Spiel." << endl;
   cout << "Blau=1, gelb=2, gruen=3, rot=4, braun=5, orange=6." << endl;
   cout << "---------------------------------------------------------" << endl;
   cout << "Bitte je 4 Ziffern so eingeben:" << endl;
   cout << "Dein 1. Tipp: 1 Leertaste 2 Leertaste 5 Leertaste 6" << endl;
   cout << endl;
   system("pause");
   srand(time(NULL));
   //Mischen:
   for (int k=0; k<MAX; k++)
   {
        int zufall = rand()%MAX;
     Mind temp = geheim[k];
        geheim[k] = geheim[zufall];
        geheim[zufall] = temp;
   }

   //Tipps:
   for (int z=1;     ; z++)
   {
        int schwarz=0;
        cout << " Dein " << z << ". Tipp: ";
        for (int y=0; y<RATEREIHE; y++)
        { geraten[y].get();
        if (geraten[0]==9)
        {
        for (int v=0; v<RATEREIHE; v++) geheim[v].print();
        cout << endl;
        system("pause");
        exit(0);
        }
   
        if (geraten[y]==geheim[y])
       schwarz++;
    
   }//for y
   cout << "                               " << schwarz << " Schwarze";
   if (schwarz==1) cout << "r";
   if (schwarz==4)
     {
         cout << endl << "Du hast es geschafft ..." << endl;
         system("pause");
        exit(0);
     }
   int weiss=0;
   for (int x=0; x<3; x++)
    { if (geraten[x]==geheim[x+1]) weiss++;
     if (geraten[x+1]==geheim[x]) weiss++;
 }//for x
 
   for (int w=0; w<2; w++)
    {
    if (geraten[w]==geheim[w+2]) weiss++;
    if (geraten[w+2]==geheim[w]) weiss++;
    }//for w
   if (geraten[0]==geheim[3]) weiss++;
   if (geraten[3]==geheim[0]) weiss++;
   cout << ", " << weiss << " Weisse";
   if (weiss==1) cout << "r";
   cout << endl;
   }//for z    
}//main