16.11.2014 Views

Programowanie obiektowe C++ Informatyka/Automatyka i ...

Programowanie obiektowe C++ Informatyka/Automatyka i ...

Programowanie obiektowe C++ Informatyka/Automatyka i ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!