Operaattoreiden ylikuormitus (ylikirjoitus)

Operaattorien ylikirjoitus (Operator Overloading)

C++:n operaattorit voidaan ylikirjoittaa, eli niille voidaan tehdä oma toteutus.

Esimerkki 1. 'Tulostus' -operaattorin ylikirjoitus.

class CLuokka

{

public:

CLuokka(int m, const char a[]) :

m_Muuttuja(m),

m_Nimi(a)

{ }

friend ostream& operator<<(ostream&, const CLuokka&);

private:

int m_Muuttuja;

string m_Nimi;

};

// Toteutus

ostream& operator<<(ostream& os, const CLuokka& r)

{

os << "m_Muuttuja = " << r.m_Muuttuja << ", m_Nimi = " << r.m_Nimi;

return os;

}

Esimerkki 2. Sijoitus-operaattorin ylikirjoitus.

class CLuokka

{

public:

CLuokka& operator=(const CLuokka&);

private:

int m_Muuttuja;

string m_Nimi;

};

// Toteutus

CLuokka& CLuokka::operator=(const CLuokka& luokka)

{

// Tarkistetaan itseensä sijoituksen varalta. Syy löytyy täältä [www].

if (*this == &luokka) {

return *this;

} else {

*this = luokka;

m_Nimi = luokka.m_Nimi;

return *this;

}

}