Konstruktor
Každá instance je vytvořena pomocí speciální metody - konstruktoru. Konstruktor se musí jmenovat stejně jako třída, jejíž instance bude vytvářet, nesmí mít návratovou hodnotu a měl by být veřejný. Každá třída může mít k dispozici více konstruktorů s různými parametry. Pak se jedná o přetěžování konstruktorů(netýká se otázky). Nemá-li třída žádný konstruktor (Například třída MojePrvniTrida v předcházející otázce č. 26.) vytvoří překladač takzvaný implicitní konstruktor bez parametrů. V konstruktoru by se měla provést inicializace dané instance. Nastavit všechny její atributy, vytvořit instance tříd, které obsahuje atd.
Příklad třídy i s konstruktory:
class Zlomek
{
private:
int Jmenovatel, Citatel;
public:
Zlomek(); /* Bezparametrický konstruktor */
Zlomek(int cislo);
Zlomek(int citatel, int jmenovatel);
~Zlomek(); //Bezparametrický destruktor.
/* Ostatní metody třídy zlomek: */
int dejCitatel();
int dejJmenovatel();
void nastavCitatel(int citatel);
void nastavJmenovatel(int jmenovatel);
float hodnota();
};
Zlomek::Zlomek() //1. konstruktor
{
Jmenovatel = 1;
Citatel = 0;
}
Zlomek::Zlomek(int cislo) //2.konstruktor
{
Citatel = cislo;
Jmenovatel = 1;
}
Zlomek::Zlomek(int citatel, int jmenovatel) //3. konstruktor
{
Citatel = citatel;
if (jmenovatel != 0)
Jmenovatel = jmenovatel;
else
Jmenovatel = 1;
}
int Zlomek::dejCitatel()
{ return Citatel; }
int Zlomek::dejJmenovatel()
{ return Jmenovatel; }
void Zlomek::nastavCitatel(int citatel)
{ Citatel = citatel; }
void Zlomek::nastavJmenovatel(int jmenovatel)
{
if (jmenovatel != 0)
Jmenovatel = jmenovatel;
}
float Zlomek::hodnota()
{ return ((float)Citatel)/Jmenovatel; }
Zlomek::~Zlomek()
{
cout << "Loučí se s vámi instance třídy zlomek. " << endl; << dejCitatel() << '/' << dejJmenovatel() << endl;
}
Destruktor
Destruktor, jak již asi sám jeho název napovídá, slouží k likvidaci objektů. Destruktor (stejně jako konstruktor) je metoda, která je zavolána na instanci v momentě, kdy je instance likvidována. Destruktor se jmenuje stejně jako třída, jen před názvem třídy je znak ~ . Destruktor nesmí mít návratovou hodnotu a žádné parametry. V destruktoru by se měly uvolnit všechny zdroje, se kterými instance pracovala. Například uzavřít datové soubory, uvolnit případnou alokovanou paměť a podobně. Nemá-li třída destruktor, překladač vytvoří implicitní destruktor. Ve třídě Zlomek naprosto stačí implicitní destruktor. Ale jako příklad je uveden.
INFORMAČNÍ TECHNOLOGIE
studenti pro studenty, soubor studijních materiálů
Pro rychlé hledání použijte studentský vyhledávač, který prohledává studijní blogy - návod pro hledání.
0
komentářů
Přihlásit se k odběru:
Příspěvky (Atom)
