OO1/Januar 2023

Izvor: SI Wiki
< ОО1
Datum izmene: 4. februar 2023. u 14:01; autor: DjoleRkc (razgovor | doprinosi) (Нова страница: {{tocright}} '''Januar 2023. godine''' održan je 27. januara 2023. i trajao je 20 minuta. {{rešenja}} == 1. zadatak == Šta ispisuje navedeni isečak koda na jeziku…)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu

Januar 2023. godine održan je 27. januara 2023. i trajao je 20 minuta.

  • За питања са више одговора, тачни одговори су подебљани и уоквирени
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
  • Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:

1. zadatak

Šta ispisuje navedeni isečak koda na jeziku C++?

#include <iostream>

using namespace std;

int main() {
    auto p = new int(5);
    int &r = *p;
    int *pok = p;
    r = 7;
    p[0] = 2;
    cout << r << *p << *pok;
}
  1. Program se ne prevodi.
  2. 777
  3. 222
  4. 555
  5. 722

Objašnjenje: I referenca r i pokazivač pok ukazuju na prvi element niza p.

2. zadatak

U kojim od navedenih funkcija klase K je pokazivač this tipa const *K const?

  1. void f() const
  2. friend f(const klasa& k)
  3. void f(const klasa& k) const
  4. void f(const klasa& k)
  5. const void f() const

Objašnjenje: Da bi this bio ovog tipa, funkcija mora da bude inspector (da ima modifikator const). Friend funkcije uopšte nemaju pokazivač this.


3. zadatak

Šta od sledećeg je moguće napraviti?

  1. Objekat klase koja sadrži apstraktni destruktor.
  2. Pokazivač na klasu koja ima apstraktni destruktor.
  3. Objekat klase koja sadrži samo virtuelne metode.
  4. Objekat klase koja sadrži virtuelni destruktor.
  5. ???

Objašnjenje: U odgovoru pod b) misli se na pokazivač tipa takve klase, koji može da pokazuje na objekat neke neapstraktne klase izvedene iz nje.

4. zadatak

Dati konstruktor je:

#include <iostream>

using namespace std;

class X {
   int ii;
   public:
    X(int i, int ii=7);
}
  1. Konstruktor konverzije
  2. Kopirajući konstruktor
  3. Delegirajući konstruktor
  4. Podrazumevani konstruktor
  5. Ništa od navedenog

5. zadatak

Koji od navedenih metoda mogu biti virtuelni?

  1. Destruktor
  2. Konstruktor sa jednim parametrom tipa string
  3. Preklopljeni operator << (bitsko pomeranje ulevo)
  4. Preklopljeni operator delete
  5. Metod bez parametara

Objašnjenje: Odgovor pod c) je tačan jer je u pitanju šiftovanje a ne preklopleni ispis.

6. zadatak

Kako mora da izgleda definicija preklopljenog operatora + klase Racun da bi se dati program pokretao?

#include <iostream>

int main {
   Racun() + 100;
}
  1. Racun& operator+(racun &r, int b);
  2. Racun& operator+(int b)
  3. Racun& operator+(int b, racun &r);
  4. friend Racun& operator+(racun &r, int b)
  5. friend Racun& operator+(int b, racun &r)

Objašnjenje: Treba voditi računa o redosledu i broju argumenata.

7. zadatak

Šta je moguće uraditi za navedene klase kako bi se program uspešno pokretao?

#include <iostream>

class A {};
class B: public A {};
  1. A a; B b = a
  2. A *a = new A
  3. B b; A &a=b
  4. A &a = new B

8. zadatak

Šta ispisuje navedeni isečak koda na jeziku C++?

#include <iostream>

using namespace std;

class Klasa{};

int main() {
    try{
     try{
      cout << 0;
      throw Klasa();
      cout << 1;
     }
     catch(int i) {cout << 2;}
     cout << 3;
    }
    catch(Klasa k) {cout << 4;}
    cout << 5;
    return 0;
}

Rešenje: 045

Objašnjenje: Prvo će se ispisati 0 iz ugnježdenog try, a zatim se baca izuzetak tipa Klasa(). Pošto unutrašnji catch ne može to da uhvati, ceo segment koda do spoljašnjeg catch-a se preskače. Spoljašnji catch hvata izuzetak i program se na dalje normalno izvršava.


9. zadatak

Šta može stakati umesto ### kako bi se na izlazu ispisalo 0?

#include <iostream>

int main {
   int x = 0;
   namespace A{
    int x = 3;
    namespace B{
     int x = 2;
     ###
     }
    }
}
  1. std::cout << x-2
  2. std::cout << :x
  3. std::cout << ::x
  4. global x; std::cout << x;

Objašnjenje: Odgovor pod b) nije tačan jer :x ne pristupa ničemu. Odgovor pod d) nije tačan jer global kao ključna reč ne postoji u C++.

10. zadatak

Šta će se ispisati na izlazu nakon izvršavanja ovog programa?

template <typename T, typename U> f(T t, U u)
cout << a;

void f(int i, double d)
cout << b;

int main{
 f(1,2.0);
 f(1,1);
 f<int, int>(1,2.0);
 f<>(1,2.0);
 f(1.0,2.0);
}

Rešenje: baaaa [1]

Napomene

  1. Studenti koji su stavili 4/5 tačnih slova na odgovarajućim mestima dobili su 0.5 poena nakon prihvaćene molbe.