Files
ZUT-notatki/uczelnia/2_semestr/programowanie/laby/lab11/zad5.cpp
2026-05-26 15:01:50 +02:00

49 lines
1.1 KiB
C++

#include <iostream>
#include <typeinfo>
class Pojazd {
public:
virtual ~Pojazd() = default;
virtual void wydajDzwiekWirtualnie() {} // metoda wirtualna
};
class Samochod : public Pojazd {
public:
void sygnal() { std::cout << "Sygnał!"; }
void wydajDzwiekWirtualnie() override { std::cout << "Sygnał!"; }
};
class Rower : public Pojazd {
public:
void Dzwonek() { std::cout << "Dzyń dzyń!"; }
void wydajDzwiekWirtualnie() override { std::cout << "Dzyń dzyń!"; }
};
class Motocykl : public Pojazd {
public:
void Warkot() { std::cout << "Wrum wrum!"; }
void wydajDzwiekWirtualnie() override { std::cout << "Wrum wrum!"; }
};
class NiepolimorficznyTyp {};
class NiepolimorficznyTyp2 : public NiepolimorficznyTyp {};
void pokazTyp(const Pojazd *p) {
const std::type_info &ti = typeid(*p);
std::cout << "Rzeczywisty typ: " << ti.name() << std::endl;
}
void pokazTyp2(const NiepolimorficznyTyp *n) {
const std::type_info &ti = typeid(*n);
std::cout << "Rzeczywisty typ: " << ti.name() << std::endl;
}
int main() {
Pojazd p;
Samochod s;
NiepolimorficznyTyp2 npol;
pokazTyp(&p);
pokazTyp(&s);
pokazTyp2(&npol);
}