Kirjautuminen

Haku

Tehtävät

Koodit: C++: Operaattorit; luokan tulostus virtaan

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

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta