ОО1/Јануар 2022 — разлика између измена
(WIP; izvor: Petar Marković (2021/0329)) |
Нема описа измене |
||
| Ред 23: | Ред 23: | ||
</div> | </div> | ||
== 2. zadatak == | == 2. zadatak == | ||
Šta je moguće staviti umesto ??? na ovom isečku koda na jeziku C++? | |||
<syntaxhighlight lang="cpp"> | |||
#include <iostream> | |||
using namespace std; | |||
int main() { | |||
char slova[] = "slova"; | |||
char* const pk = slova; | |||
??? | |||
} | |||
</syntaxhighlight> | |||
<div class="abc-list" data-solution="multiple"> | |||
# <code>pk++;</code> | |||
# <span class="solution"><code>(*pk)++;</code></span> | |||
# <code>pk = "xyz";</code> | |||
# <span class="solution"><code>char c = pk[1];</code></span> | |||
# <span class="solution"><code>pk[0] = 'a';</code></span> | |||
</div> | |||
'''Objašnjenje:''' <span class="spoiler" data-solution="explanation"><code>pk</code> 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. </span> | |||
== 3. zadatak == | == 3. zadatak == | ||
Šta je moguće staviti umesto ??? na ovom isečku koda na jeziku C++? | |||
<syntaxhighlight lang="cpp"> | |||
#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; | |||
??? | |||
} | |||
</syntaxhighlight> | |||
<div class="abc-list" data-solution="multiple"> | |||
# <code>obj.a = 5;</code> | |||
# <span class="solution"><code>obj.b = 5;</code></span> | |||
# <span class="solution"><code>obj.y = 5;</code></span> | |||
# <code>obj.x = 5;</code> | |||
# <code>X::y = 5;</code> | |||
</div> | |||
== 4. zadatak == | == 4. zadatak == | ||
Šta ispisuje sledeći kod na programskom jeziku C++? | |||
<syntaxhighlight lang="cpp"> | |||
#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(); | |||
} | |||
</syntaxhighlight> | |||
<div class="abc-list" data-solution="single"> | |||
# Program se ne prevodi. | |||
# 1 | |||
# 11 | |||
# <span class="solution">12</span> | |||
# 21 | |||
</div> | |||
== 5. zadatak == | == 5. zadatak == | ||
Šta ispisuje sledeći kod na programskom jeziku C++? | |||
<syntaxhighlight lang="cpp"> | |||
#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; | |||
} | |||
</syntaxhighlight> | |||
<div class="abc-list" data-solution="single"> | |||
# Program se ne prevodi. | |||
# 0120 | |||
# <span class="solution">0102</span> | |||
# Nijedan od ponuđenih odgovora. | |||
</div> | |||
== 6. zadatak == | == 6. zadatak == | ||
Šta je tačno od sledećih navoda o preklapanju operatora na jeziku C++? | |||
<div class="abc-list" data-solution="multiple"> | |||
# Ako se preklopi operator <code>new</code> gubi se podrazumevani konstruktor. | |||
# Kada se preklapa <code>()</code>, operator može da primi proizvoljno parametara ali svi moraju da budu standardnog tipa. | |||
# Funkcijska klasa je klasa koja preklapa barem jedan od operatora <code>() [] -></code>. | |||
# <span class="solution">Klasa može imati više preklopnjenih <code>new</code> operatora.</span> | |||
# <span class="solution"><code>new</code> operator se preklapa kao statički metod.</span> | |||
</div> | |||
== 7. zadatak == | == 7. zadatak == | ||
Šta je tačno od sledećih navoda o apstraktnim klasama na jeziku C++? | |||
<div class="abc-list" data-solution="multiple"> | |||
# <span class="solution">Apstraktna klasa je ona koja ima barem jednu apstraktnu metodu.</span> | |||
# Statički metod može da bude apstraktan. | |||
# Klasa može biti apstraktna ako su joj destruktor i sve metode konkretne. | |||
# <span class="solution">Da bi izvedena klasa bila konkretna, mora da konkretizuje sve apstraktne metode.</span> | |||
# Apstraktna klasa se označava sa <code>abstract</code> u definiciji pre <code>class</code>. | |||
</div> | |||
== 8. zadatak == | == 8. zadatak == | ||
Šta je tačno od sledećih navoda o šablonskim klasama na jeziku C++? | |||
<div class="abc-list" data-solution="multiple"> | |||
# <span class="solution">Može se izvoditi iz šablonskih klasa.</span> | |||
# Šablonska klasa ne može imati virtuelne metode. | |||
# <span class="solution">Šablonski metodi ne mogu biti virtuelni.</span> | |||
# ?? | |||
# ?? | |||
</div> | |||
== 9. zadatak == | == 9. zadatak == | ||
Šta je tačno od sledećih navoda o virtuelnim metodama na jeziku C++? | |||
<div class="abc-list" data-solution="multiple"> | |||
# <span class="solution">Destruktor može da bude virtuelan.</span> | |||
# Konstruktor može da bude virtuelan. | |||
# Statički metod može da bude virtuelan. | |||
# Prijateljska globalna funkcija može biti virtuelna. | |||
# <span class="solution">Nestatički metod može da bude virtuelan.</span> | |||
</div> | |||
== 10. zadatak == | == 10. zadatak == | ||
Šta je tačno od sledećih navoda o rukovaocima izuzetaka na jeziku C++? | |||
<div class="abc-list" data-solution="multiple"> | |||
# Rukovalac tipa <code>double</code> može da prihvati izuzetke tipa <code>int</code>. | |||
# <span class="solution">Rukovalac tipa <code>...</code> prihvata sve tipove izuzetaka.</span> | |||
# Rukovalac tipa <code>int</code> može da prihvati izuzetke tipa <code>double</code>. | |||
# <span class="solution">Izuzetak može da se baci iz <code>try</code> bloka.</span> | |||
# Izuzetak ne može da se baci iz <code>catch</code> bloka. | |||
</div> | |||
[[Категорија:Рокови]] | [[Категорија:Рокови]] | ||
[[Категорија:ОО1]] | [[Категорија:ОО1]] | ||
Верзија на датум 28. јануар 2022. у 11:52
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
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.