ver2, POLITECHNIKA, AiR, Semestr II, PROG. OBIEKTOWE, KOŁO

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; }

    };

...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • alter.htw.pl
  • Powered by WordPress, © Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.