Kirjoittaja: Metabolix
Kirjoitettu: 01.10.2006 – 01.10.2006
Tagit: ohjelmointitavat, koodi näytille, vinkki
Tässä on tiivis esimerkki luokan tulostamisesta virtaan eli esimerkiksi ruudulle (cout) tai tiedostoon. Samalla tulee käsiteltyä hieman operaattorien ylikuormittamista ja friend-määrettä. Kommenttien pitäisi kertoa kaikki oleellinen.
// Operaattorin toinen puoli on geneerinen ostream eli tulostusvirta #include <ostream> // Esimerkkiluokka class Luokka { private: // Tarvitaan jotakin tulostettavaa tälle luokalle int x, y; public: // Tämä aina yhtä mukava asetusfunktio void aseta_jasenet(int uusi_x, int uusi_y); // Näin määrittelemme kyseisen operaattorin luokan ystäväksi (friend). // Tämän avulla operaattori voi käyttää luokan yksityisiä jäseniä. // Itse operaattorifunktio ei kuulu luokkaan, se määritellään myöhemmin. friend std::ostream& operator << (std::ostream& virta, const Luokka& olio); }; // Näin siis asetetaan kaksi jäsentä void Luokka::aseta_jasenet(int uusi_x, int uusi_y) { x = uusi_x; y = uusi_y; } // Sitten on itse tulostusfunktio, operaattori <<. // Palautusarvona on ostream-tyyppi eli tulostevirtojen kantatyyppi. // Parametreina on virta (vasemmalla) ja tulostettava Luokka-tyypin olio (oikealla) std::ostream& operator << (std::ostream& virta, const Luokka& olio) { virta << "(" << olio.x << ", " << olio.y << ")"; return virta; }
// Jotta esimerkki voisi tulostaa ruudulle #include <iostream> int main() { Luokka esimerkki; esimerkki.aseta_jasenet(10, 23); // (10, 23) = (10, 23) std::cout << esimerkki << " = " << esimerkki << std::endl; return 0; }