C++: Az összehasonlító operátorok túlterhelése

Programozással kapcsolatos cikkek / C, C++ (1755 katt)

Ha a >, >=, <, <= operátorokat szeretnénk túlterhelni (operator overloading) C++-ban, akkor van rá lehetőség. Hozzunk létre a példa kedvéért egy Ember osztályt, ahol az embereknek van neve és magassága. Ez esetben egy ember akkor nagyobb, mint egy másik, ha magasabb nála. Ezt az alábbi módon lehet leprogramozni (egy viszonylag fapados példán keresztül szemléltetve):

#include <iostream>
#include <string>

using namespace std;

class Ember
{
private:
string nev;
int magassag;

public:
Ember(string nev = "Ismeretlen", int magassag = 180) :
nev(nev), magassag(magassag) { }

bool operator > (Ember e) const;
bool operator >= (Ember e) const;
bool operator < (Ember e) const;
bool operator <= (Ember e) const;
};

bool Ember::operator > (Ember e) const
{
return this->magassag > e.magassag;
}

bool Ember::operator >= (Ember e) const
{
return this->magassag >= e.magassag;
}

bool Ember::operator < (Ember e) const
{
return this->magassag < e.magassag;
}

bool Ember::operator <= (Ember e) const
{
return this->magassag <= e.magassag;
}

int main()
{
Ember e1("Feriba", 190);
Ember e2("Pistaba", 180);

if (e1 > e2)
cout << "Feriba nagyobb, mint Pistaba" << endl;
else
cout << "Feriba kisebb vagy egyenlo, mint Pistaba" << endl;

return 0;
}
}

Előző oldal Kapitány