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()
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