OO1/Pitalice

Izvor: SI Wiki
< ОО1
Datum izmene: 31. januar 2021. u 04:09; autor: KockaAdmiralac (razgovor | doprinosi) (Krenuto sa prepisivanjem ispitnih primera koji su nestali sa telekom drajva)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu

Na ovoj stranici skupljeni su razni ispitni primeri koji su se možda pojavili na ispitu ali im se ne zna rok pojavljivanja ili jednostavno nije bilo dovoljno dobro formulisanih pitalica iz tog roka kako bi se odvojili u stranicu roka.

  • Za pitanja sa više odgovora, tačni odgovori su podebljani i uokvireni.
  • Za pitanja za koje se odgovori unose, tačni odgovori su podvučeni i sakriveni: ovako.
  • Pritisnite na sledeće dugme kako biste ih sakrili ili otkrili:

1. zadatak

Šta je od navedenog tačno:

  1. Objekat javno izvedene klase nasleđuje samo implementaciju osnovne klase, a ne i ugovor
  2. Objekat zaštićene izvedene klase je jedna vrsta objekta osnovne klase u svakoj globalnoj funkciji
  3. Kod privatnog izvođenja nasleđuje se ugovor osnovne klase
  4. Javnim izvođenjem samo se uspostavlja relacija sadržaja između objekta izvedene klase i nasleđenog podobjekta osnovne klase
  5. Ništa od ponuđenog

2. zadatak

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

template <typename T> class Klasa {
public:
    template <typename U> void m (U u) { cout << "1"; }
    void m (int u) {cout << "2"; }
};

template <typename T> class Klasa <T*> {
public:
    template <typename U> void m (U u) { cout << "3"; }
    void m (int u) {cout << "4"; }
};

int main () {
    Klasa <int*>().m<float>(9);
    Klasa <int> ().m(9);
    Klasa <int> ().m('a');
    Klasa <int*>().m<int>(2);
}

Odgovor: 3213

3. zadatak

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

class Klasa {};

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

Odgovor: 0235

4. zadatak

Šta važi za apstraktne klase?

  1. ne mogu se praviti objekti apstraktne klase zato što ona ne može imati destruktor
  2. natklasa apstraktne klase je obavezno apstraktna klasa
  3. klasa izvedena iz apstraktne klase mora da redefiniše sve nasleđene apstraktne metode
  4. ne mogu se stvarati objekti apstraktne klase već samo pokazivači i refence na nju, koji mogu pokazivati (upućivati) na objekte konkretnih izvedenih klasa koje nisu apstraktne

5. zadatak

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

void f() noexcept {}
void g() noexcept (!noexcept (f())) {}
void h() noexcept (noexcept (g())) {}
void m() noexcept (noexcept (f()) || noexcept (g())) {}

int main () {
    cout << (noexcept (f()) ? 1:0);
    cout << (noexcept (g()) ? 1:0);
    cout << (noexcept (h()) ? 1:0);
    cout << (noexcept (m()) ? 1:0);
    return 0;
}

Odgovor: 1001

6. zadatak

Šta ispisuje dati program:

#include <iostream>
using namespace std;

class A {
public:
    static int i;
    A() { i++; }
};
int A::i = 0;

class B : virtual public A {
public:
    B() { i++; }
};

class C : public A {
public:
    C() { i++; }
};

class D : public B, public C {
public:
    void pisi() { cout << i; }
};

int main () {
    D d;
    d.pisi();
    return 0;
}

Odgovor: 4

7. zadatak

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

class A {
public:
    virtual void m() {}
};
class B : public A {};
class C : public B {};

int main () {
    A *pa = new B();
    B *pb = new C();
    B *b = dynamic_cast <B*>(pa);
    C *c = dynamic_cast <C*> (pa);
    C *d = dynamic_cast <C*> (pb);
    if (b == nullptr) cout << 'b';
    if (c == nullptr) cout << 'c';
    if (d == nullptr) cout << 'd';
    return 0;
}
  1. baca se izuzetak bad_cast
  2. d
  3. cd
  4. c
  5. bcd

8. zadatak

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

class A {
public:
    A(int i) {
        if (i < 5) cout << 'a';
        else throw 'b';
    }
};

int main() {
    int i = 1;
    if (noexcept(A(i++))) cout << i;
    else cout << 2*i;
    return 0;
}

Odgovor: 2

9. zadatak

Zaokružiti ispravne izraze, ako je dat sledeći kod:

template <typename T=int, int k=10>
class Niz { T niz[k]; };
  1. Niz<int*, 20> n1;
  2. Niz<int*&, 20> n2;
  3. Niz<20> n3;
  4. Niz<> n4;
  5. Niz<double, 5.5> n5;
  6. Niz n6;

Napomena: Odgovor pod f) se prevodi samo od C++17 i novijih standarda.

10. zadatak

11. zadatak

12. zadatak

13. zadatak

14. zadatak

15. zadatak

16. zadatak

17. zadatak

18. zadatak

19. zadatak

20. zadatak

21. zadatak

22. zadatak