ОО1/Питалице — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (+{{rešenja}})
м (Markacija za narednu verziju prikazivanja rešenja)
Ред 5: Ред 5:
== 1. zadatak ==
== 1. zadatak ==
Šta je od navedenog tačno:
Šta je od navedenog tačno:
<div class="abc-list">
<div class="abc-list" data-solution="single">
# Objekat javno izvedene klase nasleđuje samo implementaciju osnovne klase, a ne i ugovor
# Objekat javno izvedene klase nasleđuje samo implementaciju osnovne klase, a ne i ugovor
# Objekat zaštićene izvedene klase je jedna vrsta objekta osnovne klase u svakoj globalnoj funkciji
# Objekat zaštićene izvedene klase je jedna vrsta objekta osnovne klase u svakoj globalnoj funkciji
Ред 38: Ред 38:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">3213</span>
Odgovor: <span class="spoiler" data-solution="text">3213</span>


== 3. zadatak ==
== 3. zadatak ==
Ред 63: Ред 63:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">0235</span>
Odgovor: <span class="spoiler" data-solution="text">0235</span>


== 4. zadatak ==
== 4. zadatak ==
Šta važi za apstraktne klase?
Šta važi za apstraktne klase?
<div class="abc-list">
<div class="abc-list" data-solution="single">
# ne mogu se praviti objekti apstraktne klase zato što ona ne može imati destruktor
# ne mogu se praviti objekti apstraktne klase zato što ona ne može imati destruktor
# natklasa apstraktne klase je obavezno apstraktna klasa
# natklasa apstraktne klase je obavezno apstraktna klasa
Ред 93: Ред 93:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">1001</span>
Odgovor: <span class="spoiler" data-solution="text">1001</span>


== 6. zadatak ==
== 6. zadatak ==
Ред 129: Ред 129:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">4</span>
Odgovor: <span class="spoiler" data-solution="text">4</span>


== 7. zadatak ==
== 7. zadatak ==
Ред 156: Ред 156:
}
}
</syntaxhighlight>
</syntaxhighlight>
<div class="abc-list">
<div class="abc-list" data-solution="single">
# baca se izuzetak ''bad_cast''
# baca se izuzetak ''bad_cast''
# d
# d
Ред 185: Ред 185:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">2</span>
Odgovor: <span class="spoiler" data-solution="text">2</span>


== 9. zadatak ==
== 9. zadatak ==
Ред 193: Ред 193:
class Niz { T niz[k]; };
class Niz { T niz[k]; };
</syntaxhighlight>
</syntaxhighlight>
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# <span class="solution"><syntaxhighlight lang="cpp" inline>Niz<int*, 20> n1;</syntaxhighlight></span>
# <span class="solution"><syntaxhighlight lang="cpp" inline>Niz<int*, 20> n1;</syntaxhighlight></span>
# <syntaxhighlight lang="cpp" inline>Niz<int*&, 20> n2;</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>Niz<int*&, 20> n2;</syntaxhighlight>
Ред 230: Ред 230:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">528</span>
Odgovor: <span class="spoiler" data-solution="text">528</span>


== 11. zadatak ==
== 11. zadatak ==
Šta ispisuje sledeći program:
Šta ispisuje sledeći program (upisati -1 ukoliko se program ne prevodi):
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
#include <iostream>
#include <iostream>
Ред 261: Ред 261:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">Ne prevodi se, D je apstraktna klasa</span>
Odgovor: <span class="spoiler" data-solution="text">-1</span>
 
Objašnjenje: <span class="spoiler" data-solution="explanation">Ne prevodi se, D je apstraktna klasa</span>


== 12. zadatak ==
== 12. zadatak ==
(Jul 2020, 10. zadatak) Šta važi za osnovnu i izvedenu klasu, ako obe imaju prazna tela, a izvođenje je javno:
(Jul 2020, 10. zadatak) Šta važi za osnovnu i izvedenu klasu, ako obe imaju prazna tela, a izvođenje je javno:
<div class="abc-list">
<div class="abc-list" data-solution="multi">
# Izvedena klasa nasleđuje konstruktor
# Izvedena klasa nasleđuje konstruktor
# <span class="solution">Izvedena klasa ne nasleđuje destruktor</span>
# <span class="solution">Izvedena klasa ne nasleđuje destruktor</span>
Ред 300: Ред 302:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">3</span>
Odgovor: <span class="spoiler" data-solution="text">3</span>


== 14. zadatak ==
== 14. zadatak ==
Ред 316: Ред 318:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">4</span>
Odgovor: <span class="spoiler" data-solution="text">4</span>


== 15. zadatak ==
== 15. zadatak ==
Ред 341: Ред 343:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">4003</span>
Odgovor: <span class="spoiler" data-solution="text">4003</span>


== 16. zadatak ==
== 16. zadatak ==
Zaokruži tačna tvrđenja:
Zaokruži tačna tvrđenja:
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# Generičke funkcije ubrzavaju izvršavanje programa
# Generičke funkcije ubrzavaju izvršavanje programa
# Generičke funkcije ubrzavaju prevođenje
# Generičke funkcije ubrzavaju prevođenje
Ред 366: Ред 368:
</syntaxhighlight>
</syntaxhighlight>
Za klasu T mora da postoji:
Za klasu T mora da postoji:
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# <span class="solution">Podrazumevani konstruktor</span>
# <span class="solution">Podrazumevani konstruktor</span>
# <span class="solution">Operator dodele vrednosti</span>
# <span class="solution">Operator dodele vrednosti</span>
Ред 376: Ред 378:
== 18. zadatak ==
== 18. zadatak ==
(Septembar 2020, 6. zadatak) Ako je exception klasa izuzetaka i iz nje je izvedena klasa I, a iz klase I dalje izvedena klasa II, kojim redosledom treba navesti rukovaoce izuzecima (zaokružiti jedno ili više):
(Septembar 2020, 6. zadatak) Ako je exception klasa izuzetaka i iz nje je izvedena klasa I, a iz klase I dalje izvedena klasa II, kojim redosledom treba navesti rukovaoce izuzecima (zaokružiti jedno ili više):
<div class="abc-list">
<div class="abc-list" data-solution="single">
# exception, I , II , ...
# exception, I , II , ...
# <span class="solution">II, I, exception, ...</span>
# <span class="solution">II, I, exception, ...</span>
Ред 406: Ред 408:
}
}
</syntaxhighlight>
</syntaxhighlight>
<div class="abc-list">
<div class="abc-list" data-solution="single">
# Specijalizacija 1
# Specijalizacija 1
# Specijalizacija 2
# Specijalizacija 2
Ред 440: Ред 442:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">222</span>
Odgovor: <span class="spoiler" data-solution="text">222</span>


== 21. zadatak ==
== 21. zadatak ==
Ред 456: Ред 458:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">10 0.5 6.5</span>
Odgovor: <span class="spoiler" data-solution="text">10 0.5 6.5</span>


== 22. zadatak ==
== 22. zadatak ==
Ред 477: Ред 479:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">4</span>
Odgovor: <span class="spoiler" data-solution="text">4</span>


== 23. zadatak ==
== 23. zadatak ==
Ред 487: Ред 489:
};
};
</syntaxhighlight>
</syntaxhighlight>
<div class="abc-list">
<div class="abc-list" data-solution="single">
# <span class="solution">Ispravna je</span>
# <span class="solution">Ispravna je</span>
# Nije ispravna jer za binarni operator + fali još jedan argument
# Nije ispravna jer za binarni operator + fali još jedan argument
Ред 496: Ред 498:
== 24. zadatak ==
== 24. zadatak ==
Šta od sledećeg važi za destruktore:
Šta od sledećeg važi za destruktore:
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# <span class="solution">Destruktor nema argumente</span>
# <span class="solution">Destruktor nema argumente</span>
# Destruktor može imati jedan argument ako ima podrazumevanu vrednost
# Destruktor može imati jedan argument ako ima podrazumevanu vrednost
Ред 528: Ред 530:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">76</span>
Odgovor: <span class="spoiler" data-solution="text">76</span>


== 26. zadatak ==
== 26. zadatak ==
Ред 551: Ред 553:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">2143</span>
Odgovor: <span class="spoiler" data-solution="text">2143</span>


== 27. zadatak ==
== 27. zadatak ==
Ред 561: Ред 563:
};
};
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">Promena n-arnosti operatora.</span>
<div class="abc-list" data-solution="single">
# Nema problema.
# Nepravilna promena prava pristupa.
# <span class="solution">Promena n-arnosti operatora.</span>
# Prosleđivanje argumenata operatora po referenci.
# Ništa od ponuđenog.
</div>


== 28. zadatak ==
== 28. zadatak ==
Ред 570: Ред 578:
int* c = &a;
int* c = &a;
</syntaxhighlight>
</syntaxhighlight>
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# nijedna
# nijedna
# <code>c--</code>
# <code>c--</code>
Ред 579: Ред 587:


== 29. zadatak ==
== 29. zadatak ==
Kako se pravilo definiše niz od <code>n</code> celih brojeva, ako <code>n</code> zadaje korisnik tokom izvršavanja?
Kako se pravilno definiše niz od <code>n</code> celih brojeva, ako <code>n</code> zadaje korisnik tokom izvršavanja?
 
<div class="abc-list" data-solution="multiple">
Odgovor: <span class="spoiler"><code>int *niz = new int[n];</code></span>
# <syntaxhighlight lang="cpp" inline>int niz = new int[n];</syntaxhighlight>
# <span class="solution"><syntaxhighlight lang="cpp" inline>int *niz = new int[n];</syntaxhighlight></span>
# <syntaxhighlight lang="cpp" inline>int niz = new int*[n];</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>int niz[n];</syntaxhighlight>
# <syntaxhighlight lang="cpp" inline>int *niz[n];</syntaxhighlight>
</div>


== 30. zadatak ==
== 30. zadatak ==
Ред 600: Ред 613:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">43</span>
Odgovor: <span class="spoiler" data-solution="text">43</span>


== 31. zadatak ==
== 31. zadatak ==
Ред 630: Ред 643:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">ABAC</span>
Odgovor: <span class="spoiler" data-solution="text">ABAC</span>


== 32. zadatak ==
== 32. zadatak ==
(Jul 2020, 7. zadatak) Da li su sledeći mehanizmi statički ili dinamički?
(Jul 2020, 7. zadatak) Da li su sledeći mehanizmi statički ili dinamički?
<div data-solution="select" data-options="statički,dinamički">
* Generici - <span class="spoiler">statički</span>
* Generici - <span class="spoiler">statički</span>
* Preklapanje operatora - <span class="spoiler">statički</span>
* Preklapanje operatora - <span class="spoiler">statički</span>
Ред 639: Ред 653:
* Preklapanje imena funkcija - <span class="spoiler">statički</span>
* Preklapanje imena funkcija - <span class="spoiler">statički</span>
* Obrada izuzetaka - <span class="spoiler">dinamički</span>
* Obrada izuzetaka - <span class="spoiler">dinamički</span>
</div>


== 33. zadatak ==
== 33. zadatak ==
Koje osobine su zajedničke za operatore <code>()</code> i <code>-></code>:
Koje osobine su zajedničke za operatore <code>()</code> i <code>-></code>:
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# preklapaju se kao binarni
# preklapaju se kao binarni
# mogu se preklopiti kao globalna prijateljska funkcija
# mogu se preklopiti kao globalna prijateljska funkcija
Ред 651: Ред 666:


== 34. zadatak ==
== 34. zadatak ==
Zašto u C++ definicija promenljive može stajati bilo gde u bloku a ne samo na početku bloka?
Odgovor: <span class="spoiler">Zato što je naredba</span>
== 35. zadatak ==
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
class T {
class T {
Ред 663: Ред 673:
</syntaxhighlight>
</syntaxhighlight>
Kog je tipa <code>this</code> u metodu <code>m</code>?
Kog je tipa <code>this</code> u metodu <code>m</code>?
<div class="abc-list">
<div class="abc-list" data-solution="single">
# <code>T*</code>
# <code>T*</code>
# <code>const T*</code>
# <code>const T*</code>
Ред 671: Ред 681:
</div>
</div>


== 36. zadatak ==
== 35. zadatak ==
Šta ispisuje sledeći kod:
Šta ispisuje sledeći kod:
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
Ред 693: Ред 703:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">3</span>
Odgovor: <span class="spoiler" data-solution="text">3</span>


== 37. zadatak ==
== 36. zadatak ==
Koju vrednost će imati <code>reg_br</code>?
Koju vrednost će imati <code>reg_br</code>?
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
Ред 713: Ред 723:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">5</span>
Odgovor: <span class="spoiler" data-solution="text">5</span>


== 38. zadatak ==
== 37. zadatak ==
Koje tvrdnje za statički kast su tačne?
Koje tvrdnje za statički kast su tačne?
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# Koristi se za uklanjanje/dodavanje modifikatora <code>const</code> nekom tipu
# Koristi se za uklanjanje/dodavanje modifikatora <code>const</code> nekom tipu
# <span class="solution">Koristi se za konverzije između numeričkih tipova</span>
# <span class="solution">Koristi se za konverzije između numeričkih tipova</span>
Ред 727: Ред 737:
</div>
</div>


== 39. zadatak ==
== 38. zadatak ==
Konstruktor neke klase se izvršava:
Konstruktor neke klase se izvršava:
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# <span class="solution">Kada se izvršava definicija statičkog objekta neke klase</span>
# <span class="solution">Kada se izvršava definicija statičkog objekta neke klase</span>
# Kada se vrši dodela vrednosti objektu date klase
# Kada se vrši dodela vrednosti objektu date klase
Ред 738: Ред 748:
</div>
</div>


== 40. zadatak ==
== 39. zadatak ==
Koje tvrdnje su ispravne:
Koje tvrdnje su ispravne:
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# <span class="solution">Doseg globalne promenljive je od definicije do kraja fajla u kojem je definisana</span>
# <span class="solution">Doseg globalne promenljive je od definicije do kraja fajla u kojem je definisana</span>
# Doseg klasnog atributa je od mesta gde je naveden do kraja definicije klase
# Doseg klasnog atributa je od mesta gde je naveden do kraja definicije klase
Ред 748: Ред 758:
</div>
</div>


== 41. zadatak ==
== 40. zadatak ==
Upućivač (referenca) na dvrednost je dvrednost:
Upućivač (referenca) na dvrednost je dvrednost:
<div class="abc-list">
<div class="abc-list" data-solution="single">
# Tačno
# Tačno
# <span class="solution">Netačno</span>
# <span class="solution">Netačno</span>
</div>
</div>


== 42. zadatak ==
== 41. zadatak ==
Koje tvrdnje su ispravne:
Koje tvrdnje su ispravne:
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# Objekat klase mora ispoljavati polimorfno ponašanje
# Objekat klase mora ispoljavati polimorfno ponašanje
# Objekat klase je opis korisničkog struktuiranog tipa
# Objekat klase je opis korisničkog struktuiranog tipa
Ред 765: Ред 775:
</div>
</div>


== 43. zadatak ==
== 42. zadatak ==
(Jul 2020, 1. zadatak) Šta se u kom koraku istorijata objekte paradigme desilo:
(Jul 2020, 1. zadatak) Šta se u kom koraku istorijata objekte paradigme desilo:
{| class="wikitable"
{| class="wikitable"
Ред 773: Ред 783:
|-
|-
|
|
* Apstrakcija izraza <span class="spoiler">e.</span>
<div data-solution="select" data-options="FORTRAN,Algol60,Pascal">
* Apstrakcija kontrole <span class="spoiler">f.</span>
* Apstrakcija izraza <span class="spoiler">FORTRAN</span>
* Apstrakcija podataka <span class="spoiler">b.</span>
* Apstrakcija kontrole <span class="spoiler">Algol60</span>
* Apstrakcija podataka <span class="spoiler">Pascal</span>
</div>
| <div class="abc-list">
| <div class="abc-list">
# COBOL
# COBOL
Ред 786: Ред 798:
|}
|}


== 44. zadatak ==
== 43. zadatak ==
(Jul 2020, 3. zadatak) Kako se iz glavne funkcije može pristupiti <code>tmp</code>?
(Jul 2020, 3. zadatak) Kako se iz glavne funkcije može pristupiti <code>tmp</code>?
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
Ред 795: Ред 807:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">A::B::tmp</span>
Odgovor: <span class="spoiler" data-solution="text">A::B::tmp</span>


== 45. zadatak ==
== 44. zadatak ==
(Septembar 2020, 1. zadatak) Šta ispisuje sledeći program:
(Septembar 2020, 1. zadatak) Šta ispisuje sledeći program:
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
Ред 834: Ред 846:
}
}
</syntaxhighlight>
</syntaxhighlight>
Odgovor: <span class="spoiler">XXbBACY</span>
Odgovor: <span class="spoiler" data-solution="text">XXbBACY</span>


== 46. zadatak ==
== 45. zadatak ==
(Septembar 2020, 4. zadatak) Stvarni argument šablona može biti:
(Septembar 2020, 4. zadatak) Stvarni argument šablona može biti:
<div class="abc-list">
<div class="abc-list" data-solution="multiple">
# Ime šablonske klase
# Ime šablonske klase
# <span class="solution">Ime prave klase</span>
# <span class="solution">Ime prave klase</span>

Верзија на датум 28. јун 2021. у 17:06

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.

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

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

(Oktobar 2020, 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

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

class O {};
class I: public O {};

int main() {
    try {
        throw I();
        cout << "1";
    }
    catch(O o) {
        cout << "5";
        try {
            throw I();
            cout << "3";
        }
        catch(I i) { cout << "2"; }
    }
    catch(I i) { cout << "4"; }
    cout << "8";
    return 0;
}

Odgovor: 528

11. zadatak

Šta ispisuje sledeći program (upisati -1 ukoliko se program ne prevodi):

#include <iostream>
using namespace std;

class A {
public:
    virtual void m1() = 0;
    virtual void m2() = 0;
};
class B : public A {
public:
    void m1() { cout << "1"; }
};
class C : public A {
public:
    void m2() { cout << "2"; }
};
class D : public B, public C {
public:
    void m2() { cout << "3"; }
};
int main(){
    D d;
    d.m2();
    return 0;
}

Odgovor: -1

Objašnjenje: Ne prevodi se, D je apstraktna klasa

12. zadatak

(Jul 2020, 10. zadatak) Šta važi za osnovnu i izvedenu klasu, ako obe imaju prazna tela, a izvođenje je javno:

  1. Izvedena klasa nasleđuje konstruktor
  2. Izvedena klasa ne nasleđuje destruktor
  3. Izvedena klasa ima podrazumevani konstruktor sa praznim telom
  4. Izvedena klasa ima destruktor koji ima prazno telo
  5. Izvedena klasa ima automatski generisan kopirajući konstruktor

13. zadatak

Šta ispisuje sledeći program:

#include <iostream>
using namespace std;

class X {
public:
    X() {}
    void m(int i) {
        try {
            if (i == 2) throw 2;
            cout << "1" << endl;
        }
        catch (double k) { cout << "2" << endl; }
    }
};

int main() {
    X x;
    try {
        x.m(2);
    }
    catch (int k) { cout << "3" << endl; }
    return 0;
}

Odgovor: 3

14. zadatak

Koliko će se zvezdica ispisati?

#include <iostream>
using namespace std;

void f(int i, int& j) { i++; j++; }

int main(){
    for (int i = 0, j = 0; i < 3 && j < 4; f(i, j))
        cout << '*';
    return 0;
}

Odgovor: 4

15. zadatak

Šta ispisuje sledeći program:

#include <iostream>
using namespace std;

class A {
    int x, y;
public:
    A(int xx, int yy) : x(xx) , y(yy){}
    double div() { if (y == 0) throw x; return x/y; }
    int mod() { if (y == 0) throw 0; return x % y; }
};

int main() {
    A a(4, 0), aa(3, 5);
    try { cout << a.div(); } catch(int x) { cout << x; }
    try { cout << a.mod(); } catch(int x) { cout << x; }
    try { cout << aa.div(); } catch(int x) { cout << x; }
    try { cout << aa.mod(); } catch(int x) { cout << x; }
    return 0;
}

Odgovor: 4003

16. zadatak

Zaokruži tačna tvrđenja:

  1. Generičke funkcije ubrzavaju izvršavanje programa
  2. Generičke funkcije ubrzavaju prevođenje
  3. Generičke funkcije i klase omogućavaju bolju reupotrebu koda
  4. Generički mehanizam omogućava generisanje funkcija sa različitim tipovima parametara u toku izvršavanja programa

17. zadatak

Zaokruži tačna tvrđenja:

template <typename T>
void swap (T *a, T *b){
    T c;
    for (int i = 0; i < n; i++) {
        c = a[i];
        a[i] = b[i];
        b[i] = c;
    }
}

Za klasu T mora da postoji:

  1. Podrazumevani konstruktor
  2. Operator dodele vrednosti
  3. Operator []
  4. Kopirajući konstruktor
  5. Metoda koja vrši polimorfnu kopiju

18. zadatak

(Septembar 2020, 6. zadatak) Ako je exception klasa izuzetaka i iz nje je izvedena klasa I, a iz klase I dalje izvedena klasa II, kojim redosledom treba navesti rukovaoce izuzecima (zaokružiti jedno ili više):

  1. exception, I , II , ...
  2. II, I, exception, ...
  3. I, II , exception, ...
  4. II, I, ..., exception
  5. ..., exception, I, II

19. zadatak

Šta ispisuje sledeći program:

#include <iostream>
using namespace std;

template<class T, class U, int I> struct X {
    void f() { cout << "Osnovni sablon" << endl; }
};
template<class T, int I> struct X<T, T*, I> {
    void f() { cout << "Specijalizacija 1" << endl; }
};
template<class T> struct X<int, T*, 10> {
    void f() { cout << "Specijalizacija 2" << endl; }
};

int main() {
    X<int, int*, 10> f;
    f.f();
    return 0;
}
  1. Specijalizacija 1
  2. Specijalizacija 2
  3. Greška jer se pristupa privatnom polju
  4. Greška zbog dvoznačnosti šablona

20. zadatak

Šta ispisuje sledeći program:

#include <iostream>
using namespace std;

void fun(int p) {
    try {
        throw p;
    }
    catch (int p) { cout << ++p; throw; }
}

int main() {
    int p = 1;
    try {
        try {
            fun(p);
            cout << ++p;
        }
        catch (int p) { cout << ++p; }
        cout << ++p;
    }
    catch (int p) { cout << ++p; }
    return 0;
}

Odgovor: 222

21. zadatak

Šta ispisuje sledeći program:

#include <iostream>
using namespace std;

int main() {
    int x = 10;
    double y = 1.5;
    decltype(++x - y) a = y-- + 5;
    cout << x << ' ' << y << ' ' << a;
    return 0;
}

Odgovor: 10 0.5 6.5

22. zadatak

Šta ispisuje sledeći program:

#include <iostream>
using namespace std;

class Klasa {};
class Izvedena : public Klasa {};

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

Odgovor: 4

23. zadatak

Šta je problem kod definicije funkcije:

class X {
public:
    X operator+(const X& x) const;
};
  1. Ispravna je
  2. Nije ispravna jer za binarni operator + fali još jedan argument
  3. Nije ispravna jer nisu obezbeđene bočne vrednosti
  4. Nije ispravna jer ova funkcija MORA da vraća referencu na lvrednost

24. zadatak

Šta od sledećeg važi za destruktore:

  1. Destruktor nema argumente
  2. Destruktor može imati jedan argument ako ima podrazumevanu vrednost
  3. Destruktor vraća void
  4. Destruktor se može eksplicitno pozvati

25. zadatak

Šta ispisuje sledeći program:

#include <iostream>
using namespace std;

class A {
    int i;
public:
    A(int ii) : i(ii) { cout << i; }
};

class B {
    A a1, a2;
public:
    B(A a11=A(5), A a22=A(6)) : a1(a11), a2(a22) {}
};

int main() {
    int i = 7;
    A a(i);
    B b(a);
    return 0;
}

Odgovor: 76

26. zadatak

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

class X {
public:
    X(int a, int b=0) {
        cout << "1";
    }
    X() { cout << "2"; }
    X(double d) { cout << "3"; }
    X(const X &X) { cout << "4"; }
};

int main() {
    X X1, X2(1), X3(X1), X4(.5);
    return 0;
}

Odgovor: 2143

27. zadatak

Šta je problem kod definisanja operatora +?

class Klasa {
public:
    Klasa operator+(const Klasa& k1, const Klasa& k2);
};
  1. Nema problema.
  2. Nepravilna promena prava pristupa.
  3. Promena n-arnosti operatora.
  4. Prosleđivanje argumenata operatora po referenci.
  5. Ništa od ponuđenog.

28. zadatak

Koja naredba je ekvivalentna b-- u kodu?

int a = 5;
int& b = a;
int* c = &a;
  1. nijedna
  2. c--
  3. a--
  4. (*c)--
  5. c = a-1

29. zadatak

Kako se pravilno definiše niz od n celih brojeva, ako n zadaje korisnik tokom izvršavanja?

  1. int niz = new int[n];
  2. int *niz = new int[n];
  3. int niz = new int*[n];
  4. int niz[n];
  5. int *niz[n];

30. zadatak

Šta ispisuje sledeći kod:

class K {
public:
    K(int k) { cout << k; }
};
class A {
    K k2 = 1, k1 = 2;
public:
    A(int i, int j) : k1(i), k2(j) {}
};
int main() {
    A a(3, 4);
    return 0;
}

Odgovor: 43

31. zadatak

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

class A {
    int a;
public:
    A() { a = 1; cout << "A"; }
};
class B {
    A a;
public:
    B() { cout << "B"; }
};
class C {
    B b;
    A a;
public:
    C() { cout << "C"; }
};

int main() {
    C c;
    return 0;
}

Odgovor: ABAC

32. zadatak

(Jul 2020, 7. zadatak) Da li su sledeći mehanizmi statički ili dinamički?

  • Generici - statički
  • Preklapanje operatora - statički
  • Polimorfizam - dinamički
  • Preklapanje imena funkcija - statički
  • Obrada izuzetaka - dinamički

33. zadatak

Koje osobine su zajedničke za operatore () i ->:

  1. preklapaju se kao binarni
  2. mogu se preklopiti kao globalna prijateljska funkcija
  3. tip rezultata mora biti jednak tipu operanda
  4. preklapanjem nije moguće promeniti prioritet operatora
  5. rezultat mora biti pokazivačkog tipa

34. zadatak

class T {
public:
    void m(int x) const;
};

Kog je tipa this u metodu m?

  1. T*
  2. const T*
  3. const T&
  4. const T* const
  5. T* const

35. zadatak

Šta ispisuje sledeći kod:

#include <iostream>
using namespace std;

class A {
private:
    int i;
public:
    A(int ii) { i = ii; }
    int dohvati() { return i; }
    int operator()() { return 3; }
};
static int a() { return 4; }

int main() {
    A a(2);
    cout << a();
    return 0;
}

Odgovor: 3

36. zadatak

Koju vrednost će imati reg_br?

class A {
    static int reg_br;
    int id = reg_br++;
    int i;
public:
    A(int ii) { i = ii; reg_br = 5; }
};

int A::reg_br = 2;

int main() {
    A a(2);
    return 0;
}

Odgovor: 5

37. zadatak

Koje tvrdnje za statički kast su tačne?

  1. Koristi se za uklanjanje/dodavanje modifikatora const nekom tipu
  2. Koristi se za konverzije između numeričkih tipova
  3. Koristi se za korisničke konverzije
  4. Koristi se za konverzije tipova podataka koji nisu u logičkoj vezi
  5. Koristi se za konverzije između pokazivačkih tipova
  6. Koristi se za prenosive konverzije
  7. Koristi se za neprenosive konverzije

38. zadatak

Konstruktor neke klase se izvršava:

  1. Kada se izvršava definicija statičkog objekta neke klase
  2. Kada se vrši dodela vrednosti objektu date klase
  3. Kada se konstruktor eksplicitno pozove i stvori se privremeni objekat date klase
  4. Kada se stvara dinamički objekat date klase
  5. Kada se vrši prenos argumenta u parametar date klase po vrednosti
  6. Kada se iz funkcije vraća rezultat tipa date klase po vrednosti

39. zadatak

Koje tvrdnje su ispravne:

  1. Doseg globalne promenljive je od definicije do kraja fajla u kojem je definisana
  2. Doseg klasnog atributa je od mesta gde je naveden do kraja definicije klase
  3. Doseg promenljive definisane u definicije for petlje, prema standardu, je do kraja okružujućeg bloka for petlje
  4. Doseg lokalne promenljive je od početka do kraja bloka u kojem je definisana
  5. Doseg labele je od mesta gde je definisana do kraja tela funkcije

40. zadatak

Upućivač (referenca) na dvrednost je dvrednost:

  1. Tačno
  2. Netačno

41. zadatak

Koje tvrdnje su ispravne:

  1. Objekat klase mora ispoljavati polimorfno ponašanje
  2. Objekat klase je opis korisničkog struktuiranog tipa
  3. Objekat klase je nešto (u memoriji) što ima stanje, ponašanje i identitet
  4. Objekat klase je opis ponašanje srodnih primeraka neke apstrakcije
  5. Objekat u širem smislu je podatak određenog tipa koji u vreme izvršavanja programa ima određeno mesto u memoriji

42. zadatak

(Jul 2020, 1. zadatak) Šta se u kom koraku istorijata objekte paradigme desilo:

Date opcije
Apstrakcija Programski jezik
  • Apstrakcija izraza FORTRAN
  • Apstrakcija kontrole Algol60
  • Apstrakcija podataka Pascal
  1. COBOL
  2. Pascal
  3. Simula 67
  4. Ada
  5. FORTRAN
  6. Algol60

43. zadatak

(Jul 2020, 3. zadatak) Kako se iz glavne funkcije može pristupiti tmp?

namespace A {
    namespace B {
        int tmp = 2;
    }
}

Odgovor: A::B::tmp

44. zadatak

(Septembar 2020, 1. zadatak) Šta ispisuje sledeći program:

#include <iostream>
using namespace std;

class X {
public:
    X() { cout << 'X'; }
    X(char c) { cout << 'X' << c; }
};

class A : virtual X {
public:
    A() : X('a') { cout << 'A'; }
};

class B : X {
public:
    B() : X('b') { cout << 'B'; }
};

class C : virtual X {
public:
    C() : X('c') { cout << 'C'; }
};

class Y : A, virtual B, C {
public:
    Y() { cout << 'Y'; }
};

int main() {
    Y y;
	return 0;
}

Odgovor: XXbBACY

45. zadatak

(Septembar 2020, 4. zadatak) Stvarni argument šablona može biti:

  1. Ime šablonske klase
  2. Ime prave klase
  3. Funkcija
  4. Šablonska klasa s parametrima
  5. Parametar