ОО1/Јануар 2023
Јануар 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;
}
- Програм се не преводи.
- 777
- 222
- 555
- 722
Објашњење: I референца р и показивач пок указују на први елемент низа п.
2. задатак
У којим од наведених функција класе К је показивач this типа const *K const?
void f() constfriend f(const klasa& k)void f(const klasa& k) constvoid f(const klasa& k)const void f() const
Објашњење: Да би тхис био овог типа, функција мора да буде инспецтор (да има модификатор цонст). Фриенд функције уопште немају показивач тхис.
3. задатак
Шта од следећег је могуће направити?
- Објекат класе која садржи апстрактни деструктор.
- Показивач на класу која има апстрактни деструктор.
- Објекат класе која садржи само виртуелне методе.
- Објекат класе која садржи виртуелни деструктор.
- ???
Објашњење: У одговору под б) мисли се на показивач типа такве класе, који може да показује на објекат неке неапстрактне класе изведене из ње.
4. задатак
Дати конструктор је:
#include <iostream>
using namespace std;
class X {
int ii;
public:
X(int i, int ii=7);
}
- Конструктор конверзије
- Копирајући конструктор
- Делегирајући конструктор
- Подразумевани конструктор
- Ништа од наведеног
5. задатак
Који од наведених метода могу бити виртуелни?
- Деструктор
- Конструктор са једним параметром типа стринг
- Преклопљени оператор << (битско померање улево)
- Преклопљени оператор делете
- Метод без параметара
Објашњење: Одговор под ц) је тачан јер је у питању шифтовање а не преклоплени испис.
6. задатак
Како мора да изгледа дефиниција преклопљеног оператора + класе Рацун да би се дати програм покретао?
#include <iostream>
int main {
Racun() + 100;
}
Racun& operator+(racun &r, int b);Racun& operator+(int b)Racun& operator+(int b, racun &r);friend Racun& operator+(racun &r, int b)friend Racun& operator+(int b, racun &r)
Објашњење: Треба водити рачуна о редоследу и броју аргумената.
7. задатак
Шта је могуће урадити за наведене класе како би се програм успешно покретао?
#include <iostream>
class A {};
class B: public A {};
A a; B b = aA *a = new AB b; A &a=bA &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;
###
}
}
}
std::cout << x-2std::cout << :xstd::cout << ::xglobal 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]
Напомене
- ↑ Студенти који су ставили 4/5 тачних слова на одговарајућим местима добили су 0.5 поена након прихваћене молбе.