Lekcja nr 2 - Najprostrze dziedziczenie i lista inicjalizacyjna. Relacja jest czymś w rodzaju i ma coś.

Cóż nam po obiektach w dotychczasowej postaci? No nie dużo. Ale przecież możliwości obiektów się na tym nie kończą.

 

#include <iostream>

class Bazowa
{
protected:
    int x;
    int y;
public:
    Bazowa(int x = 0, int y = 1) : x(x), y(y) {}
    void Wyswietl() { std::cout << x << '\n' << y << std::endl; }
};

class Pochodna : public Bazowa
{
protected:
    int z;
public:
    Pochodna(int x = 0, int y = 1, int z = 2) : Bazowa(x, y), z(z) {}
    void Wyswietl() { std::cout << x << '\n' << y << '\n' << z << std::endl; }
};

int main()
{
    Bazowa b;
    Pochodna p;
    b.Wyswietl();
    p.Wyswietl();
    static_cast<Bazowa>(p).Wyswietl();
    system("pause");
    return 0;
}

 

Mamy klasę bazową i pochodną. Klasa pochodna dziedziczy po klasie bazowej przydzielając dostęp publiczny do publicznego interfejsu rodzica (można byłoby też np. wrzucić publiczny interfejs rodzica do private).

Używamy listy inicjalizacyjnej nie raz: można z jej pomocą nadawać wartości polom i wywoływać konstruktory.

"static_cast<Bazowa>(p).Wyswietl();" <- rzutowaliśmy obiekt pochodny na rodzica, przez co używaliśmy jego metody.

To była relacja jest czymś w rodzaju (is-like-a), ponieważ Pochodna dziedziczy po Bazowej.

Relacja ma coś to nic innego jak obiekt w obiekcie, więc nie muszę się rozpisywać :#


Załóż własną stronę internetową za darmo Webnode