OO1/Januar 2022
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
G1
1. zadatak
Šta je tačno za navedeni isečak koda na jeziku C++?
#include <iostream>
using namespace std;
int main() {
int niz[] = { 1, 2, 3 };
int i;
cin >> i;
cout << niz[i];
}
- Postoji problem curenja memorije.
- Niz ima tačno 3 elemenata.
- Postoji problem sa visećim pokazivačem.
- Ako se na standardni ulaz upiše 1, program će ispisati 1.
2. zadatak
Šta je moguće staviti umesto ??? na ovom isečku koda na jeziku C++?
#include <iostream>
using namespace std;
int main() {
char slova[] = "slova";
char* const pk = slova;
???
}
pk++;(*pk)++;pk = "xyz";char c = pk[1];pk[0] = 'a';
Objašnjenje: pk je konstantni pokazivač na char što znači da ne može da se promeni na šta on pokazuje, tako da su prvi i treći odgovori netačni. Drugi i peti odgovori su tačni jer je samo pokazivač konstantan, a ne promenljiva na koju pokazuje.
3. zadatak
Šta je moguće staviti umesto ??? na ovom isečku koda na jeziku C++?
#include <iostream>
using namespace std;
class X {
int a;
public:
static int y;
int b;
private:
static int x;
};
int X::y = 1;
int X::x = 2;
int main() {
X obj;
???
}
obj.a = 5;obj.b = 5;obj.y = 5;obj.x = 5;X::y = 5;
4. zadatak
Šta ispisuje sledeći kod na programskom jeziku C++?
#include <iostream>
using namespace std;
class X {
public:
static X&& kreiraj() { X* pk = new X(); return static_cast<X&&>(*pk); }
void metod()& { cout << 1; }
void metod()&& { cout << 2; }
};
int main() {
X x;
x.metod();
X::kreiraj().metod();
}
- Program se ne prevodi.
- 1
- 11
- 12
- 21
5. zadatak
Šta ispisuje sledeći kod na programskom jeziku C++?
#include <iostream>
using namespace std;
class A {
public:
A() { cout << "0"; }
};
class B{
A a;
public:
B() { cout << "1"; }
};
class C : public B {
A a;
public:
C() { cout << "2"; }
};
int main() {
C c;
}
- Program se ne prevodi.
- 0120
- 0102
- Nijedan od ponuđenih odgovora.
6. zadatak
Šta je tačno od sledećih navoda o preklapanju operatora na jeziku C++?
- Ako se preklopi operator
newgubi se podrazumevani konstruktor. - Kada se preklapa
(), operator može da primi proizvoljno parametara ali svi moraju da budu standardnog tipa. - Funkcijska klasa je klasa koja preklapa barem jedan od operatora
() [] ->. - Klasa može imati više preklopnjenih
newoperatora. newoperator se preklapa kao statički metod.
7. zadatak
Šta je tačno od sledećih navoda o apstraktnim klasama na jeziku C++?
- Apstraktna klasa je ona koja ima barem jednu apstraktnu metodu.
- Statički metod može da bude apstraktan.
- Klasa može biti apstraktna ako su joj destruktor i sve metode konkretne.
- Da bi izvedena klasa bila konkretna, mora da konkretizuje sve apstraktne metode.
- Apstraktna klasa se označava sa
abstractu definiciji preclass.
8. zadatak
Šta je tačno od sledećih navoda o šablonskim klasama na jeziku C++?
- Može se izvoditi iz šablonskih klasa.
- Šablonska klasa ne može imati virtuelne metode.
- Šablonski metodi ne mogu biti virtuelni.
- ??
- ??
9. zadatak
Šta je tačno od sledećih navoda o virtuelnim metodama na jeziku C++?
- Destruktor može da bude virtuelan.
- Konstruktor može da bude virtuelan.
- Statički metod može da bude virtuelan.
- Prijateljska globalna funkcija može biti virtuelna.
- Nestatički metod može da bude virtuelan.
10. zadatak
Šta je tačno od sledećih navoda o rukovaocima izuzetaka na jeziku C++?
- Rukovalac tipa
doublemože da prihvati izuzetke tipaint. - Rukovalac tipa
...prihvata sve tipove izuzetaka. - Rukovalac tipa
intmože da prihvati izuzetke tipadouble. - Izuzetak može da se baci iz
trybloka. - Izuzetak ne može da se baci iz
catchbloka.