Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
Jest to lista pytań, która jest wypadkową odpowiedzi moich(slowman), Modima i AIRu z 2 roku. ZMIENIONE ODPOWIEDZI DO PYTAŃ: 68, 78, 136, 137 i 143 true false
W sumie jest 150 pytań – 2 razy ponumerowałem OpisProblemu. Jeśli zauważyliście jakieś błędy to najlepiej piszcie na forum w odpowiednim temacie( ). Wszystkie potencjalne błędy będą mile widziane.
Sprzeczne pytania zostały: - przedyskutowane także z Małkiem – niestety w większości trudnych przypadków odsyłał do Kreczmera. - skonsultowane z dr Kreczmerem-jednak nie udzielił on żadnej konkretnej odpowiedzi-zazwyczaj uśmiechał się licząc nasze szanse na niezaliczenie.
Wyjątków ma nie być na ekranówce zaliczeniowej-będą na egzaminie :).
OpisProblemu ====================================================
Dany jest nastepujacy fragment kodu:
#include <iostream> using namespace std;
ostream strumien1, strumien2;
int main() { strumien1 = strumien2 = cout; strumien1 << " Napis1 "; strumien2 << " Napis2 " << endl; return 0; }
Czy prawda jest, ze ... KoniecOpisu
1 OpisPytania ... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
KoniecOpisu
2 OpisPytania ... nic sie nie pojawi, gdyz program zawiera blad. KoniecOpisu
3 OpisPytania ... nic sie nie pojawi, gdyz dla strumieni operacja przypisania nie jest dozwolona. KoniecOpisu
4 OpisPytania ... nic sie nie pojawi, gdyz wielokrotne przypisywanie dla strumieni nie jest mozliwe. Nalezaloby to rozwiazac za pomoca pojedynczych przypisan, tj. strumien1 = cout; strumien2 = cout; KoniecOpisu
OpisProblemu ====================================================
Dany jest nastepujacy fragment kodu:
#include <iostream> using namespace std;
ostream &strumien1 = cout, &strumien2 = strumien1;
int main() { strumien1 << " Napis1 "; strumien2 << " Napis2 " << endl; }
Czy prawda jest, ze ... KoniecOpisu
5 OpisPytania ... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
KoniecOpisu
6 OpisPytania ... na wyjsciu standardowym pojawi sie napis:
Napis1 Napis2
Jednak program moze spowodowac blad wykonania, gdyz operacje tego typu nie sa dozwolone. KoniecOpisu
7 OpisPytania ... moze powstac blad, aczkolwiek nie musi, gdyz "strumien2" jest referencja do referencji. KoniecOpisu
8 OpisPytania ... operujac na zmiennych referencyjnych "strumien1" i "strumien2", wykonujemy operacje na strumieniu wyjscia standardowego reprezentowanym przez obiekt "cout". KoniecOpisu
OpisProblemu ====================================================
Dany jest nastepujacy fragment kodu:
#include <iostream> using namespace std;
class FiguraGeom { public: virtual void Wyswietl() { cout << " FiguraGeom" << endl; } };
class Kwadrat: public FiguraGeom { public: virtual void Wyswietl() { cout << " Kwadrat" << endl; } };
int main() { Kwadrat *wKwd = new Kwadrat; FiguraGeom *wFig = wKwd; wFig->Wyswietl(); }
Czy prawda jest, ze ... KoniecOpisu
9 OpisPytania ... w programie wystepuje niezgodnosci typow w podstawieniu:
FiguraGeom *wFig = wKwd;
W tym przypadku nie jest mozliwe niejawne rzutowanie "w gore". KoniecOpisu
10 OpisPytania ... na ekranie pokaze sie napis:
Kwadrat
Jest to wynik dzialania metody "Wyswietl" z klasy "Kwadrat". KoniecOpisu
11 OpisPytania ... ponizsze podstawienie moze spowodowac blad.
FiguraGeom *wFig = wKwd;
Powodem jest wystepowanie metod wirtualnych w definicjach klas. KoniecOpisu
12 OpisPytania ... obiekt klasy "Kwadrat" zawiera w sobie obiekt klasy "FiguraGeom". KoniecOpisu - potwierdzone przez Kreczmera
13 OpisPytania ... domyslne destruktory dla klas "FiguraGeom" i "Kwadrat" nie sa destruktorami wirtualnymi. KoniecOpisu
OpisProblemu ====================================================
Dany jest nastepujacy fragment kodu:
#include <iostream> using namespace std;
class KlasaA { public: virtual ~KlasaA() {} };
class KlasaB: public KlasaA { public: ~KlasaB() {} };
int main() { KlasaB *wObiektB = new KlasaB; KlasaA *wObiektA = wObiektB;
delete wObiektA; }
Czy prawda jest, ze ... KoniecOpisu
14 OpisPytania ... zapis programu jest prawidlowy i destrukcja obiektu przebiegnie wlasciwie. W tym przypadku brak slowa kluczowe "virtual" przed destruktorem klasy "KlasaB" nie ma zadnego znaczenia. KoniecOpisu
15 OpisPytania ... sam zapis programu jest prawidlowy. Jednak uruchomienie programu moze powodowac jego bledne dzialanie. Aby temu zapobiec nalezaloby zmienic linie:
KlasaA *wObiektA = wObiektB;
na linie:
KlasaA *wObiektA = static_cast<KlasaA*>(wObiektB); KoniecOpisu
16 OpisPytania ... destruktor klasy "KlasaB" jest jest destruktorem wirtualnym mimo braku slowa kluczowego "virtual". KoniecOpisu
17 OpisPytania ... w programie w linii:
KlasaA *wObiektA = wObiektB;
zachodzi niejawne rzutowanie "w gore". Jest ono mozliwe tylko i wylacznie dzieki temu, ze klasa "KlasaA" posiada destruktor wirtualny. KoniecOpisu
OpisProblemu ====================================================
Dany jest nastepujacy fragment kodu:
#include <iostream> using namespace std;
class KlasaA { };
class KlasaB: public KlasaA { };
int main() { KlasaA *wObiektA = new KlasaB; KlasaB *wObiektB = wObiektA;
return 0; }
Czy prawda jest, ze ... KoniecOpisu
OpisPytania 18 ... w programie w linii:
KlasaB *wObiektB = wObiektA;
wystepuje niedozwolona proba rzutowania "w dol". KoniecOpisu
19 OpisPytania ... w programie w linii
KlasaB *wObiektB = wObiektA;
wystepuje rzutowanie "w dol", ktore bedzie poprawne jesli zastosowany zostanie operator jawnego rzutowania w postaci:
KlasaB *wObiektB = static_cast<KlasaB*>(wObiektA); KoniecOpisu
20 OpisPytania ... w programie w linii:
KlasaB *wObiektB = wObiektA;
rzutowanie "w dol" byloby poprawne, gdyby zostal w odpowiedni sposob zdefiniowany wirtualny destruktor w klasie "KlasaA". KoniecOpisu
21 OpisPytania ... w programie w linii:
KlasaA *wObiektA = new KlasaB;
nie ma bledu zapisu polecenia. Jednak wykonanie tej operacji moze powodowac (aczkolwiek nie zawsze musi) blad i przerwanie dzialania programu w momencie wykonania tej instrukcji. KoniecOpisu
OpisProblemu ====================================================
Dany jest nastepujacy fragment kodu:
#include <iostream> using namespace std;
class KlasaA { public: void Wyswietl() { cout << " KlasaA" << endl; } };
class KlasaB: public KlasaA { public: virtual void Wyswietl() { cout << " KlasaB" << endl; } }; ... |
Menu
|