OO1/K1 2020

Izvor: SI Wiki
< ОО1
Datum izmene: 28. jun 2021. u 15:27; autor: KockaAdmiralac (razgovor | doprinosi) (+{{rešenja}})
Pređi na navigaciju Pređi na pretragu
  • За питања са више одговора, тачни одговори су подебљани и уоквирени
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
  • Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:

G1

1. zadatak

Koji je tip promenljive p u sledećem programu:

int main(void) {
    int i = 1;
    const int k = i;
    auto p = new int + k;
    return 0;
}
  1. int
  2. const int
  3. int*
  4. const int*
  5. Program se ne prevodi.

2. zadatak

Šta ispisuje sledeći program na jeziku C++?

#include <iostream>
 
int &f(int &x){
  return ++x;
}

int main(void) {
  std::cout << f(2);
}
  1. 6
  2. 0
  3. Program se ne prevodi.
  4. 5

3. zadatak

Ime simbol predstavlja niz referenci na nepromenljiv pokazivač na int. Kako se deklariše u kodu?

  1. ...
  2. ...
  3. int * const &simbol[]
  4. Deklaracija za simbol se ne prevodi.

?. zadatak

Isti zadatak se našao i na probnom kolokvijumu za IR.

Koje tvrđenje je tačno?

  1. Mehanizam preklapanje[sic] imena funkcija je potpuno statički, koja funkcija će se pozvati određuje se u vreme prevođenja.
  2. Mehanizam preklapanje[sic] imena funkcija je potpuno dinamički, koja funkcija će se pozvati određuje se u vreme izvršavanja.
  3. Mehanizam preklapanje[sic] imena funkcija je potpuno statički, koja funkcija će se pozvati određuje se u vreme izvršavanja.
  4. Mehanizam preklapanje[sic] imena funkcija je potpuno dinamički, koja funkcija će se pozvati određuje se u vreme prevođenja.

?. zadatak

Isti zadatak se našao i na probnom kolokvijumu za IR.

Koja tvrđenja su tačna na programskom jeziku C++?

  1. Metodi int f() & { return 1; } i int f() && { return 3; } mogu postojati u istoj klasi.
  2. Metodi int f() & { return 1; } i int f() const & { return 3; } mogu postojati u istoj klasi.
  3. Metodi int f() & { return 1; } i void f() & { } mogu postojati u istoj klasi.

7. zadatak

Šta ispisuje sledeći program na programskom jeziku C++:

#include <iostream>
using namespace std;

class K {
    static int staticId;
    int id = staticId++;
public: 
    K() = default;
    K(const K&) {}
    int m(K arg) {
        return arg.id;
    }
};

int K::staticId = 1;
int main()
{
    K a;
    K b;
    K c(a);
    cout << a.m(c);
}
  1. 1
  2. 2
  3. 5
  4. 3
  5. 4
  6. Više od 5.

G2

1. zadatak

Zaokružiti tačne tvrdnje u vezi sa referencama na jeziku C++:

  1. Moguće je definisati referencu na pokazivač.
  2. Moguće je definisati niz referenci.
  3. Moguće je definisati referencu na referencu.
  4. Moguće je definisati pokazivač na referencu.

2. zadatak

Šta ispisuje sledeći program na jeziku C++?

#include <iostream>
 
int &f(int &x){
  return x++;
}

int main(void) {
  int x = 5;
  std::cout << f(x);
}
  1. 6
  2. 0
  3. Program se ne prevodi.
  4. 5

4. zadatak

Povezati tvrdnje u vezi sa modifikatorima metoda:

Modifikatori
volatile b.

const e.

& g.

&& f.

  1. Metoda se može zvati samo ako je tekući objekat pokazivač.
  2. Oznaka kompajleru da ne vrši optimizacije.
  3. Oznaka kompajleru da vrši optimizacije.
  4. Metoda je mutator.
  5. Metoda je inspektor.
  6. Metoda se može zvati samo ako je tekući objekat dvrednost.
  7. Metoda se može zvati samo ako je tekući objekat lvrednost.
  8. Metoda se može zvati samo ako je tekući objekat konstantan.

5. zadatak

Zaokružiti tačne tvrdnje u vezi sa pomerajućim konstruktorom na jeziku C++:

  1. Definisanjem podrazumevanog konstruktora briše se ugrađeni premeštajući konstruktor.
  2. Definisanjem kopirajućeg konstruktora briše se ugrađeni premeštajući konstruktor.
  3. Pomerajući konstruktor mora da ima samo jedan parametar.

6. zadatak

Zaokružiti tačne tvrdnje u vezi sa funkcijama na jeziku C++:

  1. Mogu se definisati više funkcija istog imena ako imaju različiti broj parametara bez podrazumevanih vrednosti.
  2. Mogu se definisati više funkcija istog imena ako su im različite povratne vrednosti.
  3. Ne mogu se definisati više funkcija istog imena, jer kompajler ne bi mogao da ih raspozna.
  4. Mogu se definisati više funkcija istog imena ako imaju različite tipove parametara.

7. zadatak

Šta ispisuje sledeći program na programskom jeziku C++:

#include <iostream>
using namespace std;

class L {
    L(const &L l) = delete;
};

class K {
    static int staticId;
    int id = staticId++;
    L l;
public: 
    K() = default;
    K(const K&) {}
    int m(K arg) {
        return arg.id;
    }
};

int K::staticId = 1;
int main()
{
    K a;
    K b;
    K c(a);
    cout << a.m(c);
}
  1. 1
  2. 2
  3. Program se ne prevodi
  4. 3
  5. 4

8. zadatak

Šta ispisuje sledeći program na programskom jeziku C++?

#include <iostream>
using namespace std;

class Klasa {
    static Klasa *napravi()
    {
        cout << 1;
        return new Klasa{0};
    }
    Klasa *clan = napravi();
    public:
        Klasa() { cout << 2; }
        Klasa(int a) : clan(nullptr) { cout << 3; }
};

int main() {
    Klasa k;
}

Odgovor: 132

9. zadatak

Dopuniti XXX sa linijom tako da je program ispravan:

#include <iostream>

class A {
        A(const A& a) = delete;
    public:
        int n = 1;
        A() = default;
        A(A&& a) { };
};

void f(A a) {
    std::cout << a.n;
}

int main(void)
{
    XXX
    return 0;
}
  1. f();
  2. A a; f(a);
  3. f(A());
  4. f(A);

10. zadatak

Zaokružiti tačne tvrdnje u vezi sa statičkim poljima u klasama na jeziku C++:

  1. U definiciji klase se mogu definisati promenljiva statička polja.
  2. Doseg imena statičkog polja je klasa.
  3. Statičkom polju s iz klase K se pristupa koristeći izraz K.s.