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; } } |
C++-kieli >