ОО1/К1 2020

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

Г1

1. задатак

Који је тип променљиве p у следећем програму:

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. Програм се не преводи.

2. задатак

Шта исписује следећи програм на језику C++?

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

int main(void) {
  std::cout << f(2);
}
  1. 6
  2. 0
  3. Програм се не преводи.
  4. 5

3. задатак

Име симбол представља низ референци на непроменљив показивач на инт. Како се декларише у коду?

  1. ...
  2. ...
  3. int * const &simbol[]
  4. Декларација за симбол се не преводи.

?. задатак

Исти задатак се нашао и на пробном колоквијуму за ИР.

Које тврђење је тачно?

  1. Механизам преклапање[сиц] имена функција је потпуно статички, која функција ће се позвати одређује се у време превођења.
  2. Механизам преклапање[сиц] имена функција је потпуно динамички, која функција ће се позвати одређује се у време извршавања.
  3. Механизам преклапање[сиц] имена функција је потпуно статички, која функција ће се позвати одређује се у време извршавања.
  4. Механизам преклапање[сиц] имена функција је потпуно динамички, која функција ће се позвати одређује се у време превођења.

?. задатак

Исти задатак се нашао и на пробном колоквијуму за ИР.

Која тврђења су тачна на програмском језику C++?

  1. Методи int f() & { return 1; } и int f() && { return 3; } могу постојати у истој класи.
  2. Методи int f() & { return 1; } и int f() const & { return 3; } могу постојати у истој класи.
  3. Методи int f() & { return 1; } и void f() & { } могу постојати у истој класи.

7. задатак

Шта исписује следећи програм на програмском језику 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. Више од 5.

Г2

1. задатак

Заокружити тачне тврдње у вези са референцама на језику C++:

  1. Могуће је дефинисати референцу на показивач.
  2. Могуће је дефинисати низ референци.
  3. Могуће је дефинисати референцу на референцу.
  4. Могуће је дефинисати показивач на референцу.

2. задатак

Шта исписује следећи програм на језику C++?

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

int main(void) {
  int x = 5;
  std::cout << f(x);
}
  1. 6
  2. 0
  3. Програм се не преводи.
  4. 5

4. задатак

Повезати тврдње у вези са модификаторима метода:

Модификатори
volatile б.

const е.

& г.

&& ф.

  1. Метода се може звати само ако је текући објекат показивач.
  2. Ознака компајлеру да не врши оптимизације.
  3. Ознака компајлеру да врши оптимизације.
  4. Метода је мутатор.
  5. Метода је инспектор.
  6. Метода се може звати само ако је текући објекат двредност.
  7. Метода се може звати само ако је текући објекат лвредност.
  8. Метода се може звати само ако је текући објекат константан.

5. задатак

Заокружити тачне тврдње у вези са померајућим конструктором на језику C++:

  1. Дефинисањем подразумеваног конструктора брише се уграђени премештајући конструктор.
  2. Дефинисањем копирајућег конструктора брише се уграђени премештајући конструктор.
  3. Померајући конструктор мора да има само један параметар.

6. задатак

Заокружити тачне тврдње у вези са функцијама на језику C++:

  1. Могу се дефинисати више функција истог имена ако имају различити број параметара без подразумеваних вредности.
  2. Могу се дефинисати више функција истог имена ако су им различите повратне вредности.
  3. Не могу се дефинисати више функција истог имена, јер компајлер не би могао да их распозна.
  4. Могу се дефинисати више функција истог имена ако имају различите типове параметара.

7. задатак

Шта исписује следећи програм на програмском језику 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. Програм се не преводи
  4. 3
  5. 4

8. задатак

Шта исписује следећи програм на програмском језику 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;
}

Одговор: 132

9. задатак

Допунити XXX са линијом тако да је програм исправан:

#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. задатак

Заокружити тачне тврдње у вези са статичким пољима у класама на језику C++:

  1. У дефиницији класе се могу дефинисати променљива статичка поља.
  2. Досег имена статичког поља је класа.
  3. Статичком пољу с из класе К се приступа користећи израз К.с.