Programowanie obiektowe C++ Informatyka/Automatyka i ...
Programowanie obiektowe C++ Informatyka/Automatyka i ...
Programowanie obiektowe C++ Informatyka/Automatyka i ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
(a) const int E,<br />
(b) int *E,<br />
(c) int &E,<br />
(d) float E,<br />
(e) int *&E,<br />
(f) const float & const E<br />
//...<br />
int i=1;<br />
try{<br />
try{<br />
throw E;}<br />
catch(int &){i++;throw;}<br />
catch(const int){i+=2;}<br />
catch(float *){i-=2;}<br />
catch(int *){i--;throw;}}<br />
catch(int *){i*=2;}<br />
catch(int){i--;}<br />
catch(...){i--;}<br />
//...<br />
3. Dany jest następujący schemat dziedziczenia klas: A → B → C. W każdej z nich znajdują<br />
się wirtualne metody nazwa wyświetlające nazwę typu obiektu na rzecz którego są<br />
wywoływane. Opisać efekt działania następujących operacji:<br />
(a) try {C ob1;throw ob1;} catch(B ex1) {ex1.nazwa();}<br />
(b) try {C ob2;throw ob2;} catch(B &ex2) {ex2.nazwa();}<br />
(c) try {static C ob3;throw &ob3;} catch(A *ex3)<br />
{ex3->nazwa();}<br />
4. Utworzyć klasę z własnym operatorem new. Operator ten ma przydzielić pamięć dla<br />
wybranej losowo liczby obiektów (z przedziału od 5 do 50), a następnie zasymulować ”bląd<br />
wyczerpania pamięci” i zasygnalizować sytuację wyjątkową. Dodać statyczną metodę,<br />
która odzyska przydzieloną pamięć. Następnie utworzyć blok instrukcji programu odporny<br />
na wystąpienie tego typu wyjątku.<br />
5. Utworzyć destruktor zgłaszający wyjątęk a następnie opracować program udowadniający,<br />
że takie rozwiązanie może prowadzić do niekontrolowanego zakończenia programu przez<br />
funkcję terminate(). Wykorzystać funkcję set terminate() do prawidłowego zamknięcia<br />
programu. Następnie wykazać to samo w przypadku konstruktora kopiującego.<br />
6. Prześledzić proces zgłaszania i obsługi wyjątku przy użyciu własnej klasy z konstruktorami<br />
inicjującym oraz kopiującym dostarczającymi możliwie wyczerpujących informacji<br />
o tym jak obiekt został utworzony. Pokazać, że obiekty zgłoszonych wyjatków są odpowiednio<br />
likwidowane, natomiast gdy rzucany jest wskaźnik do obiektu dynamicznego to<br />
nie jest zwalniana przypisana mu pamięć. Zaproponować rozwiązanie tego problemu.