ОО1/К1 2020 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (Ne ovo)
м (9. zadatak)
Ред 13: Ред 13:
# Moguće je definisati pokazivač na referencu.
# Moguće je definisati pokazivač na referencu.
</div>
</div>


=== 2. zadatak ===
=== 2. zadatak ===
Ред 117: Ред 116:


=== 8. zadatak ===
=== 8. zadatak ===
Šta ispisuje sledeći program na programskom jeziku C++?
<syntaxhighlight lang="cpp">
#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;
}
</syntaxhighlight>
Odgovor: <span class="spoiler">132</span>


=== 9. zadatak ===
=== 9. zadatak ===

Верзија на датум 5. новембар 2020. у 23:48

  • 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:

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.