Witam! Jestem początkującą osobą jeżeli chodzi o programowanie obiektowe. Tworzę prosty projekt, będący wypożyczalnią książek.
Mam klasę abstrakcyjną osoba, z której dziedziczy użytkownik, a z użytkownika administrator. Mam również abstrakcyjną klasę pozycja, z której dziedziczy książka oraz audiobook.
Mam teraz pytanie o użycie konstruktorów - na podstawie katalogu przedmiotów umieszczonego w pliku tekstowym tworzę tablice obiektów klasy książka bądź audiobook - mój konstruktor wygląda mniej więcej tak:
w klasie pozycja:
Pozycja::Pozycja (int id, string tytul, int rok_wydania)
{
this->id = id;
this->tytul = tytul;
this->rok_wydania = rok_wydania;
}
I przykładowo w klasie audiobook:
Audiobook::Audiobook (int dlugosc) : Pozycja (id, tytul, rok_wydania)
{
this->dlugosc = dlugosc;
}
Klasy dostają parametry do utworzenia obiektów z klasy zarządzającej biblioteką, w której znajduje się metoda wczytująca katalogi podczas startu programu.
No i teraz dwa pytania:
- Czy zrobiłem to prawidłowo? Wszystko działa tak jak powinno, no ale - czy w ten sposób się robi konstruktory w tego typu przypadkach?
- Czy powinienem zrobić jeszcze "domyslny" konstruktor, który tworzyłby obiekt bez otrzymywanych wartości, jeżeli nigdy bym takiego obiektu nie tworzył? mam tu na myśli coś tego typu:
Pozycja::Pozycja()
{
this->id = 0;
this->tytul = "domyslny";
this->rok_wydania = "0";
}
I druga kwestia to destruktory - czy w przypadku "usuwania" danego obiektu, będącego na przykład audiobookiem, wystarczy po prostu wywołać destruktor :
Pozycja::~Pozycja()
{
}
I obiekt zostanie usunięty, czy muszę jednak coś pomiędzy klamrami umieścić? Przepraszam za banalne pytanie, ale na internecie wszędzie są owe destruktory po prostu puste w środku. Dodam, że chodzi mi tylko o usunięcie tego obiektu z "pamięci" w danej chwili, nie chce wykonywać żadnych dodatkowych operacji.