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