C++-kieli‎ > ‎

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;
    }
}
Comments