Co robi typeid?
Operator ten zwraca referencję do obiektu identyfikującego typ podanego za parametr wyrażenia. Można dzięki temu porównywać typy lub pobierać ich nazwę. Obiekt typeinfo zawarty jest w nagłówku typeinfo.
#include <typeinfo> ttinclude <iostream> int main()
int *a, b;
a = 0; b = 0;
if(typeid(a) != typeid(b))
{
cout « typeid(a).name() « ", " « typeid(b).name();
}
} // end main();
Funkcje/pola publiczne, prywatne i chronione...
Różnią się w zależności od tego, skąd można się do nich odwołać:
1. Element publiczny - dowolne miejsce kodu.
2. Element chroniony - wyłącznie obiekty tej samej klasy oraz klas potomnych.
3. Element prywatny - wyłącznie obiekty tej samej klasy.
Dziedziczenie publiczne, prywatne i chronione...
Zmienia widoczność elementów klasy bazowej według następujących zasad:
1. publiczne - wszystkie elementy klasy bazowej zachowują oryginalną widoczność.
2. chronione - elementy publiczne w klasie bazowej stają się chronionymi w pochodnej, reszta pozostaje bez zmian.
3. prywatne - elementy publiczne i chronione w klasie bazowej stają się prywatne w klasie pochodnej, zatem nie są widoczne dla kolejnych klas, które dziedziczą po klasie pochodnej.
Co to jest polimorfizm?
Polimorfizm umożliwia zapamiętanie w obiektach informacji o tym, czym tak naprawdę są dzięki czemu zachowują swoje oryginalne zachowania nawet po zrzutowaniu do klasy bazowej.
Załóżmy, że klasa bazowa base posiada metodę foo(), a klasa pochodna derive przeciąża foo(). Tworzymy obiekt klasy derive, przypisujemy go do wskaźnika x typu base i wywołujemy spod niego metodę foo(). Co się stanie:
1. Bez polimorfizmu - wywołana zostanie metoda foo() z klasy bazowej pomimo tego, że obiekt tak naprawdę jest klasy derive. Metoda została określona w momencie kompilacji na podstawie typu wskaźnika.
2 z 13