ОО1/Пробни тестови 2020

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

Први тест

На сваком питању је било или могуће изабрати једно или више решења или унети одговор у поље.

1. задатак

Приликом реупотребе објектно оријентисаног кода извођењем, у начелу се стари код (постојећа класа - основа за извођење):

  1. не мора мењати ни поново преводити и тестирати.
  2. не мора мењати, али се мора поново преводити и тестирати.
  3. не мора мењати, мора поново преводити, али се не мора поново тестирати.
  4. мора мењати и поново преводити и тестирати.
  5. уопште не може искористити.

2. задатак

Која наредба омогућава коришћење имена X из простора имена Y простим именовањем X, уколико не постоји конфликт имена?

  1. decltype Y;
  2. using namespace Y;
  3. using Y::X;
  4. namespace Y.X;
  5. using Y;

3. задатак

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

#include <iostream>
struct S1{
  int a;
  int b;
};

struct S2{
  S1 a;
  int b[3][2];
};

int main() {
  S2 s={1,2,{{3},{},{4,5}}};
  std::cout<<s.b[2][0];
}

Одговор: 4

4. задатак

Шта је дозвољено да стоји на месту наредбе ###?

#include <iostream>
struct A{
    A(){}; //podrazumevani konstruktor strukture A
    int x;
    const int y=1;
    mutable int z;
};

int main(){
    A a1;
    const A a2;
    ###
}
  1. a2.z=1;
  2. a1.y=1;
  3. a2.y=1;
  4. a1.x=1;
  5. a1.z=1;
  6. a2.x=1;

5. задатак

Које функције су исправне, јер враћају референцу на "жив" објекат?

  1. int& f(int &i){int r=i; return r; }
  2. int& f(int i){return i; }
  3. int& f(int &i){return *new int(i); }
  4. int& f(int &i){int &r=*new int(i); return r; }
  5. int& f(int &i){return i; }
  6. int& f(int &i){int r=*new int(i); return r; }

6. задатак

Који од следећих исказа су тачни на језику C++?

  1. Класа може имати више приватних секција.
  2. Из метода позваног за неки објекат се не може приступити приватном атрибуту другог објекта исте класе.
  3. Јавној секцији класе могу приступати само јавни методи класе, а приватној секцији само приватни методи.
  4. Члановима у приватној секцији класе може приступати само јавни метод исте класе.
  5. Подразумевана секција класе је јавна.

7. задатак

За непроменљив и непостојан (const volatile) објекат класе могу да се позивају методи те класе са наведеним следећим модификаторима (који одређују природу текућег објекта):

  1. inline
  2. const
  3. volatile
  4. const volatile
  5. без модификатора

8. задатак

Нека је дата дефиниција класе Тест

class Test{
    Test(){}
};

За које од следећих линија кода у функцији маин() ће преводилац пријавити грешку?

  1. Test test;
  2. Test* test = new Test();
  3. Test test();
  4. Test* test;
  5. Test test{};

9. задатак

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

#include <iostream>
using namespace std;

class A {
public:
    A() { cout << "A"; }
    A(int a) { cout << "A" << a; }
};

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

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

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

Одговор: АБА1Ц1

10. задатак

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

class A {
   int i;
public:
   A(int ii=2) { i = ii; }
};
  1. Класа А има конверзиони конструктор.
  2. Класа А има један конструктор.
  3. Објекат класе А се може створити позивањем конструктора који нема ниједан параметар.
  4. Објекат класе А се може створити позивањем конструктора који има један аргумент.
  5. Класа А нема подразумевани конструктор.

Други тест

1. задатак

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

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

  1. operator()
  2. operator[]
  3. operator<<
  4. operator=
  5. operator+

2. задатак

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

Повезати операторе са одговарајућом типичном применом:

Оператори
  • Асоцијативни приступ елементу збирке а
  • Рачунање вредности полинома у тачки б
  • Паметни показивач ц
  1. operator[]
  2. operator()
  3. operator->

3. задатак

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

Шта исписује следећи програм на програмском језику C++? Уколико се програм не преводи у поље за одговор треба уписати вредност 0.

#include <iostream>

class B;

class A {
public: 
    A(int i) {}
    A(const B &b) { std::cout << "1"; }
    A& operator=(const A& a) { std::cout << "2"; return *this; }
};

class B {
public: 
    operator A() { std::cout << "3"; return 1; }
};

int main() {
    B b;
    A a(1);
    a = b;
}

Одговор: 32

4. задатак

Које тврдње су тачне?

  1. Оператор delete може имати произвољан број аргумената.
  2. У преклопљеном оператору new треба, као последњу наредбу, написати експлицитан позив конструктора класе за коју се оператор преклапа.
  3. Класа може имати више преклопљених delete оператора за појединачне објекте.
  4. Оператори new и delete се преклапају као статички методи класе.
  5. Класа може имати више преклопљених оператора new за низове.

5. задатак

Која од следећих тврдњи у вези извођења класа су тачна у језику C++?

  1. Из класе означене модификатором final није могуће даље извођење.
  2. Дозвољено је следеће извођење:
    class A : B { };
    class B : A { };
    
  3. Подразумеван начин извођења је заштићен (protected).
  4. Изведена класа не наслеђује конструкторе, деструктор и операторе operator= из основне класе.
  5. Извођење може бити јавно (public), заштићено (protected) или приватно (private).

6. задатак

Који искази су тачни? Изаберите један одговор:

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

7. задатак

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

#include <iostream>
using namespace std;

class A {
public:
    A() { cout << "A"; }
};

class C {
public:
    C() { cout << "C"; }
};

class B: public A {
    C c; A a;
public:
    B():c(), A(), a() { cout << "B"; }
};

int main() {
    B b[2];
}
  1. ЦААБЦААБ
  2. АЦБАЦБ
  3. ААЦБААЦБ
  4. АЦАБАЦАБ

8. задатак

Шта исписује следећи програмски код:

#include <iostream>
using namespace std;

class O {
public:
    virtual void m() { cout << "1"; }
};

class I : public O {
public:
    virtual void m() override { cout << "2"; }
};

int main() {
    O * p = new I();
    O o = *p;
    
    p->m();
    (*p).m();
    o.m();
    
    return 0;
}

Одговор: 221

9. задатак

Шта треба да стоји уместо *** да би дати програм на језику C++ исписао БА? Изаберите један или више одговора.

#include <iostream>
using namespace std;

class A {
public:
    ***
};
class B: public A {
public:
    ~B() { cout << "B"; }
};
int main() {
    A *a = new B();
    delete a;
}
  1. ~А() { цоут << "А"; }
  2. ~А() { цоут << "БА"; }
  3. виртуал ~А() { цоут << "БА"; }
  4. виртуал ~А() { цоут << "А"; }

10. задатак

Које тврдње су тачне?

  1. Вишеструким извођењем се сматра извођење из више класа које нису у узајамном односу извођења (наслеђивања).
  2. Вишеструким извођењем се сматра извођење у којем је једна класа родитељ већег броја класа.
  3. Вишеструким извођењем се сматра извођење из већ изведене класе.
  4. Вишеструким извођењем се сматра извођење из класе из које су већ изведене неке друге класе.
  5. Вишеструким извођењем се наслеђују уговори и имплементације свих родитељских класа.

ИР колоквијум

1. задатак

Простор на стеку се додељује:

  1. Локалним статичким објектима
  2. Глобалним статичким објектима
  3. Аргументима (параметрима) функција
  4. Динамичким објектима
  5. Локалним аутоматским објектима

2. задатак

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

#include <iostream>
int& f(int &x) {
    return ++x;
}
int main() {
    int x = 1;
    int z = 1;
    auto y = f(z);
    y++;
    std::cout << x << y << z;
}
  1. 133
  2. 233
  3. Програмски код се не преводи.
  4. 132
  5. 232

3. задатак

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

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

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() & { } могу постојати у истој класи.

5. задатак

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

#include <iostream>
using namespace std;

class A
{
private:
    int b = 2;
    int c = 3;
public:
    A() : c(b+1), b(7) { b--; a = 2; }
    void pisi() { cout << a << b << c; }
private:
    int a = 1;
};

int main()
{
    A obj;
    obj.pisi();
    return 0;
}

Одговор: 268

6. задатак

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

#include <iostream>
using namespace std;

class A {
    static int stID;
    int ID = ++stID;
public:
    A() {}
    A(const A& a) {}
    A(A&& a) {}
    ~A() { cout << ID; }
};

int A::stID = 0;

void f1(A& a) {}
void f2(A a) {}

int main() {
    A x;
    for(int i = 0; i < 3; i++){
        A* y = new A;
        if (i == 1) f2(*y);
        if (i == 2) f1(*y);
    }
    return 0;
}

Одговор: 41

7. задатак

Која су тврђења тачна за пријатељске (friend) функције и класе?

  1. Ако је класа A пријатељ класе B и класа B пријатељ класе C, онда је и класа A пријатељ класе C.
  2. Функција m() која је пријатељ класи A може бити глобална функција.
  3. Ако класа A прогласи класу B за пријатеља, методи класе A имају приступ до приватних поља класе B
  4. Пријатељство између класа је симетрична релација.
  5. Функција m() која је пријатељ класи A може бити метод класе B.

8. задатак

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

  1. operator[]
  2. operator=
  3. operator()
  4. operator+
  5. operator<<

9. задатак

Повезати операторе са одговарајућом типичном применом:

  1. Рачунање вредности полинома у тачки оператор()
  2. Паметни показивач оператор->
  3. Асоцијативни приступ елементу збирке оператор[]

10. задатак

Шта исписује следећи програм на програмском језику C++? Уколико се програм не преводи у поље за одговор треба уписати вредност 0.

#include <iostream>

class B;

class A {
public: 
    A(int i) {}
    A(const B &b) { std::cout << "1"; }
    A& operator=(const A& a) { std::cout << "2"; return *this; }
};

class B {
public: 
    operator A() { std::cout << "3"; return 1; }
};

int main() {
    B b;
    A a(1);
    a = b;
}

Одговор: 32