ОО1/К1 2020

Извор: SI Wiki
< ОО1
Датум измене: 16. новембар 2020. у 19:11; аутор: KockaAdmiralac (разговор | доприноси) (Delovi K1 za G1)
Пређи на навигацију Пређи на претрагу
  • За питања са више одговора, тачни одговори су подебљани и уоквирени.
  • За питања за које се одговори уносе, тачни одговори су подвучени и сакривени: овако.
  • Притисните на следеће дугме како бисте их сакрили или открили:

Г1

?. задатак

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

int main(void) {
    const int k = 1;
    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

?. задатак

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

  1. Када две глобалне пријатељске функције имају исти назив, при превођењу се одређује која функција ће бити коришћена.
  2. Када две глобалне пријатељске функције имају исти назив, динамички током покретања програма се одређује која функција ће бити позвана.
  3. ...
  4. ...

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

Г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. Статичком пољу с из класе К се приступа користећи израз К.с.