ОО1/Јануар 2023

Извор: SI Wiki
< ОО1
Датум измене: 4. фебруар 2023. у 14:01; аутор: DjoleRkc (разговор | доприноси) (Нова страница: {{tocright}} '''Januar 2023. godine''' održan je 27. januara 2023. i trajao je 20 minuta. {{rešenja}} == 1. zadatak == Šta ispisuje navedeni isečak koda na jeziku…)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Јануар 2023. године одржан је 27. јануара 2023. и трајао је 20 минута.

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

1. задатак

Шта исписује наведени исечак кода на језику C++?

#include <iostream>

using namespace std;

int main() {
    auto p = new int(5);
    int &r = *p;
    int *pok = p;
    r = 7;
    p[0] = 2;
    cout << r << *p << *pok;
}
  1. Програм се не преводи.
  2. 777
  3. 222
  4. 555
  5. 722

Објашњење: I референца р и показивач пок указују на први елемент низа п.

2. задатак

У којим од наведених функција класе К је показивач this типа const *K const?

  1. void f() const
  2. friend f(const klasa& k)
  3. void f(const klasa& k) const
  4. void f(const klasa& k)
  5. const void f() const

Објашњење: Да би тхис био овог типа, функција мора да буде инспецтор (да има модификатор цонст). Фриенд функције уопште немају показивач тхис.


3. задатак

Шта од следећег је могуће направити?

  1. Објекат класе која садржи апстрактни деструктор.
  2. Показивач на класу која има апстрактни деструктор.
  3. Објекат класе која садржи само виртуелне методе.
  4. Објекат класе која садржи виртуелни деструктор.
  5. ???

Објашњење: У одговору под б) мисли се на показивач типа такве класе, који може да показује на објекат неке неапстрактне класе изведене из ње.

4. задатак

Дати конструктор је:

#include <iostream>

using namespace std;

class X {
   int ii;
   public:
    X(int i, int ii=7);
}
  1. Конструктор конверзије
  2. Копирајући конструктор
  3. Делегирајући конструктор
  4. Подразумевани конструктор
  5. Ништа од наведеног

5. задатак

Који од наведених метода могу бити виртуелни?

  1. Деструктор
  2. Конструктор са једним параметром типа стринг
  3. Преклопљени оператор << (битско померање улево)
  4. Преклопљени оператор делете
  5. Метод без параметара

Објашњење: Одговор под ц) је тачан јер је у питању шифтовање а не преклоплени испис.

6. задатак

Како мора да изгледа дефиниција преклопљеног оператора + класе Рацун да би се дати програм покретао?

#include <iostream>

int main {
   Racun() + 100;
}
  1. Racun& operator+(racun &r, int b);
  2. Racun& operator+(int b)
  3. Racun& operator+(int b, racun &r);
  4. friend Racun& operator+(racun &r, int b)
  5. friend Racun& operator+(int b, racun &r)

Објашњење: Треба водити рачуна о редоследу и броју аргумената.

7. задатак

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

#include <iostream>

class A {};
class B: public A {};
  1. A a; B b = a
  2. A *a = new A
  3. B b; A &a=b
  4. A &a = new B

8. задатак

Шта исписује наведени исечак кода на језику C++?

#include <iostream>

using namespace std;

class Klasa{};

int main() {
    try{
     try{
      cout << 0;
      throw Klasa();
      cout << 1;
     }
     catch(int i) {cout << 2;}
     cout << 3;
    }
    catch(Klasa k) {cout << 4;}
    cout << 5;
    return 0;
}

Решење: 045

Објашњење: Прво ће се исписати 0 из угњежденог трy, а затим се баца изузетак типа Класа(). Пошто унутрашњи цатцх не може то да ухвати, цео сегмент кода до спољашњег цатцх-а се прескаче. Спољашњи цатцх хвата изузетак и програм се на даље нормално извршава.


9. задатак

Шта може стакати уместо ### како би се на излазу исписало 0?

#include <iostream>

int main {
   int x = 0;
   namespace A{
    int x = 3;
    namespace B{
     int x = 2;
     ###
     }
    }
}
  1. std::cout << x-2
  2. std::cout << :x
  3. std::cout << ::x
  4. global x; std::cout << x;

Објашњење: Одговор под б) није тачан јер :x не приступа ничему. Одговор под д) није тачан јер глобал као кључна реч не постоји у C++.

10. задатак

Шта ће се исписати на излазу након извршавања овог програма?

template <typename T, typename U> f(T t, U u)
cout << a;

void f(int i, double d)
cout << b;

int main{
 f(1,2.0);
 f(1,1);
 f<int, int>(1,2.0);
 f<>(1,2.0);
 f(1.0,2.0);
}

Решење: баааа [1]

Напомене

  1. Студенти који су ставили 4/5 тачних слова на одговарајућим местима добили су 0.5 поена након прихваћене молбе.