ОО1/Пробни тестови 2020 — разлика између измена
м (+{{rešenja}}) |
м (+data-solutions) |
||
| Ред 7: | Ред 7: | ||
=== 1. zadatak === | === 1. zadatak === | ||
Prilikom reupotrebe objektno orijentisanog koda izvođenjem, u načelu se stari kod (postojeća klasa - osnova za izvođenje): | Prilikom reupotrebe objektno orijentisanog koda izvođenjem, u načelu se stari kod (postojeća klasa - osnova za izvođenje): | ||
<div class="abc-list"> | <div class="abc-list" data-solution="single"> | ||
# <span class="solution">ne mora menjati ni ponovo prevoditi i testirati.</span> | # <span class="solution">ne mora menjati ni ponovo prevoditi i testirati.</span> | ||
# ne mora menjati, ali se mora ponovo prevoditi i testirati. | # ne mora menjati, ali se mora ponovo prevoditi i testirati. | ||
| Ред 17: | Ред 17: | ||
=== 2. zadatak === | === 2. zadatak === | ||
Koja naredba omogućava korišćenje imena X iz prostora imena Y prostim imenovanjem X, ukoliko ne postoji konflikt imena? | Koja naredba omogućava korišćenje imena X iz prostora imena Y prostim imenovanjem X, ukoliko ne postoji konflikt imena? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <code>decltype Y;</code> | # <code>decltype Y;</code> | ||
# <span class="solution"><code>using namespace Y;</code></span> | # <span class="solution"><code>using namespace Y;</code></span> | ||
| Ред 44: | Ред 44: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Odgovor: <span class="spoiler">4</span> | Odgovor: <span class="spoiler" data-solution="text">4</span> | ||
=== 4. zadatak === | === 4. zadatak === | ||
| Ред 63: | Ред 63: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <span class="solution"><code>a2.z=1;</code></span> | # <span class="solution"><code>a2.z=1;</code></span> | ||
# <code>a1.y=1;</code> | # <code>a1.y=1;</code> | ||
| Ред 74: | Ред 74: | ||
=== 5. zadatak === | === 5. zadatak === | ||
Koje funkcije su ispravne, jer vraćaju referencu na "živ" objekat? | Koje funkcije su ispravne, jer vraćaju referencu na "živ" objekat? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <code>int& f(int &i){int r=i; return r; }</code> | # <code>int& f(int &i){int r=i; return r; }</code> | ||
# <code>int& f(int i){return i; }</code> | # <code>int& f(int i){return i; }</code> | ||
| Ред 85: | Ред 85: | ||
=== 6. zadatak === | === 6. zadatak === | ||
Koji od sledećih iskaza su tačni na jeziku C++? | Koji od sledećih iskaza su tačni na jeziku C++? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="single"> | ||
# <span class="solution">Klasa može imati više privatnih sekcija.</span> | # <span class="solution">Klasa može imati više privatnih sekcija.</span> | ||
# Iz metoda pozvanog za neki objekat se ne može pristupiti privatnom atributu drugog objekta iste klase. | # Iz metoda pozvanog za neki objekat se ne može pristupiti privatnom atributu drugog objekta iste klase. | ||
| Ред 95: | Ред 95: | ||
=== 7. zadatak === | === 7. zadatak === | ||
Za nepromenljiv i nepostojan (<code>const volatile</code>) objekat klase mogu da se pozivaju metodi te klase sa navedenim sledećim modifikatorima (koji određuju prirodu tekućeg objekta): | Za nepromenljiv i nepostojan (<code>const volatile</code>) objekat klase mogu da se pozivaju metodi te klase sa navedenim sledećim modifikatorima (koji određuju prirodu tekućeg objekta): | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <code>inline</code> | # <code>inline</code> | ||
# <code>const</code> | # <code>const</code> | ||
| Ред 111: | Ред 111: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Za koje od sledećih linija koda u funkciji main() će prevodilac prijaviti grešku? | Za koje od sledećih linija koda u funkciji main() će prevodilac prijaviti grešku? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <span class="solution"><code>Test test;</code></span> | # <span class="solution"><code>Test test;</code></span> | ||
# <span class="solution"><code>Test* test = new Test();</code></span> | # <span class="solution"><code>Test* test = new Test();</code></span> | ||
| Ред 151: | Ред 151: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Odgovor: <span class="spoiler">ABA1C1</span> | Odgovor: <span class="spoiler" data-solution="text">ABA1C1</span> | ||
=== 10. zadatak === | === 10. zadatak === | ||
| Ред 162: | Ред 162: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <span class="solution">Klasa A ima konverzioni konstruktor.</span> | # <span class="solution">Klasa A ima konverzioni konstruktor.</span> | ||
# Klasa A ima jedan konstruktor. | # Klasa A ima jedan konstruktor. | ||
| Ред 174: | Ред 174: | ||
: ''Isti zadatak se našao i na [[#8. zadatak 3|probnom kolokvijumu za IR]].'' | : ''Isti zadatak se našao i na [[#8. zadatak 3|probnom kolokvijumu za IR]].'' | ||
Koji od sledećih operatora se moraju preklopiti kao nestatički metodi u jeziku C++? | Koji od sledećih operatora se moraju preklopiti kao nestatički metodi u jeziku C++? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <span class="solution"><code>operator()</code></span> | # <span class="solution"><code>operator()</code></span> | ||
# <span class="solution"><code>operator[]</code></span> | # <span class="solution"><code>operator[]</code></span> | ||
| Ред 189: | Ред 189: | ||
|- | |- | ||
| Asocijativni pristup elementu zbirke <span class="spoiler">a.</span> | | Asocijativni pristup elementu zbirke <span class="spoiler">a.</span> | ||
| rowspan="3" | | | rowspan="3" | | ||
# <code>operator[]</code> | # <code>operator[]</code> | ||
# <code>operator()</code> | # <code>operator()</code> | ||
| Ред 226: | Ред 226: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Odgovor: <span class="spoiler">32</span> | Odgovor: <span class="spoiler" data-solution="text">32</span> | ||
=== 4. zadatak === | === 4. zadatak === | ||
Koje tvrdnje su tačne? | Koje tvrdnje su tačne? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# Operator <code>delete</code> može imati proizvoljan broj argumenata. | # Operator <code>delete</code> može imati proizvoljan broj argumenata. | ||
# U preklopljenom operatoru <code>new</code> treba, kao poslednju naredbu, napisati eksplicitan poziv konstruktora klase za koju se operator preklapa. | # U preklopljenom operatoru <code>new</code> treba, kao poslednju naredbu, napisati eksplicitan poziv konstruktora klase za koju se operator preklapa. | ||
| Ред 240: | Ред 240: | ||
=== 5. zadatak === | === 5. zadatak === | ||
Koja od sledećih tvrdnji u vezi izvođenja klasa su tačna u jeziku C++? | Koja od sledećih tvrdnji u vezi izvođenja klasa su tačna u jeziku C++? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <span class="solution">Iz klase označene modifikatorom <code>final</code> nije moguće dalje izvođenje.</span> | # <span class="solution">Iz klase označene modifikatorom <code>final</code> nije moguće dalje izvođenje.</span> | ||
# Dozvoljeno je sledeće izvođenje: <syntaxhighlight lang="cpp"> | # Dozvoljeno je sledeće izvođenje: <syntaxhighlight lang="cpp"> | ||
| Ред 253: | Ред 253: | ||
=== 6. zadatak === | === 6. zadatak === | ||
Koji iskazi su tačni? Izaberite jedan odgovor: | Koji iskazi su tačni? Izaberite jedan odgovor: | ||
<div class="abc-list"> | <div class="abc-list" data-solution="single"> | ||
# <span class="solution">Privatnim izvođenjem uspostavlja se relacija sadržanja između objekta izvedene klase i nasleđenog podobjekta osnovne klase.</span> | # <span class="solution">Privatnim izvođenjem uspostavlja se relacija sadržanja između objekta izvedene klase i nasleđenog podobjekta osnovne klase.</span> | ||
# Objekat zaštićeno izvedene klase je jedna vrsta objekta osnovne klase u svakoj globalnoj funkciji. | # Objekat zaštićeno izvedene klase je jedna vrsta objekta osnovne klase u svakoj globalnoj funkciji. | ||
| Ред 287: | Ред 287: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<div class="abc-list"> | <div class="abc-list" data-solution="single"> | ||
# CAABCAAB | # CAABCAAB | ||
# ACBACB | # ACBACB | ||
| Ред 321: | Ред 321: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Odgovor: <span class="spoiler">221</span> | Odgovor: <span class="spoiler" data-solution="text">221</span> | ||
=== 9. zadatak === | === 9. zadatak === | ||
| Ред 342: | Ред 342: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# ~A() { cout << "A"; } | # ~A() { cout << "A"; } | ||
# <span class="solution">~A() { cout << "BA"; }</span> | # <span class="solution">~A() { cout << "BA"; }</span> | ||
| Ред 351: | Ред 351: | ||
=== 10. zadatak === | === 10. zadatak === | ||
Koje tvrdnje su tačne? | Koje tvrdnje su tačne? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <span class="solution">Višestrukim izvođenjem se smatra izvođenje iz više klasa koje nisu u uzajamnom odnosu izvođenja (nasleđivanja).</span> | # <span class="solution">Višestrukim izvođenjem se smatra izvođenje iz više klasa koje nisu u uzajamnom odnosu izvođenja (nasleđivanja).</span> | ||
# Višestrukim izvođenjem se smatra izvođenje u kojem je jedna klasa roditelj većeg broja klasa. | # Višestrukim izvođenjem se smatra izvođenje u kojem je jedna klasa roditelj većeg broja klasa. | ||
| Ред 362: | Ред 362: | ||
=== 1. zadatak === | === 1. zadatak === | ||
Prostor na steku se dodeljuje: | Prostor na steku se dodeljuje: | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# Lokalnim statičkim objektima | # Lokalnim statičkim objektima | ||
# Globalnim statičkim objektima | # Globalnim statičkim objektima | ||
| Ред 385: | Ред 385: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<div class="abc-list"> | <div class="abc-list" data-solution="single"> | ||
# 133 | # 133 | ||
# 233 | # 233 | ||
| Ред 395: | Ред 395: | ||
=== 3. zadatak === | === 3. zadatak === | ||
Koje tvrđenje je tačno? | Koje tvrđenje je tačno? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="single"> | ||
# <span class="solution">Mehanizam preklapanje<sup>[sic]</sup> imena funkcija je potpuno statički, koja funkcija će se pozvati određuje se u vreme prevođenja.</span> | # <span class="solution">Mehanizam preklapanje<sup>[sic]</sup> imena funkcija je potpuno statički, koja funkcija će se pozvati određuje se u vreme prevođenja.</span> | ||
# Mehanizam preklapanje<sup>[sic]</sup> imena funkcija je potpuno dinamički, koja funkcija će se pozvati određuje se u vreme izvršavanja. | # Mehanizam preklapanje<sup>[sic]</sup> imena funkcija je potpuno dinamički, koja funkcija će se pozvati određuje se u vreme izvršavanja. | ||
| Ред 404: | Ред 404: | ||
=== 4. zadatak === | === 4. zadatak === | ||
Koja tvrđenja su tačna na programskom jeziku C++? | Koja tvrđenja su tačna na programskom jeziku C++? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <span class="solution">Metodi <code>int f() & { return 1; }</code> i <code>int f() && { return 3; }</code> mogu postojati u istoj klasi.</span> | # <span class="solution">Metodi <code>int f() & { return 1; }</code> i <code>int f() && { return 3; }</code> mogu postojati u istoj klasi.</span> | ||
# <span class="solution">Metodi <code>int f() & { return 1; }</code> i <code>int f() const & { return 3; }</code> mogu postojati u istoj klasi.</span> | # <span class="solution">Metodi <code>int f() & { return 1; }</code> i <code>int f() const & { return 3; }</code> mogu postojati u istoj klasi.</span> | ||
| Ред 435: | Ред 435: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Odgovor: <span class="spoiler">268</span> | Odgovor: <span class="spoiler" data-solution="text">268</span> | ||
=== 6. zadatak === | === 6. zadatak === | ||
| Ред 468: | Ред 468: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Odgovor: <span class="spoiler">41</span> | Odgovor: <span class="spoiler" data-solution="text">41</span> | ||
=== 7. zadatak === | === 7. zadatak === | ||
Koja su tvrđenja tačna za prijateljske (<code>friend</code>) funkcije i klase? | Koja su tvrđenja tačna za prijateljske (<code>friend</code>) funkcije i klase? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# Ako je klasa <code>A</code> prijatelj klase <code>B</code> i klasa <code>B</code> prijatelj klase <code>C</code>, onda je i klasa <code>A</code> prijatelj klase <code>C</code>. | # Ako je klasa <code>A</code> prijatelj klase <code>B</code> i klasa <code>B</code> prijatelj klase <code>C</code>, onda je i klasa <code>A</code> prijatelj klase <code>C</code>. | ||
# <span class="solution">Funkcija <code>m()</code> koja je prijatelj klasi <code>A</code> može biti globalna funkcija.</span> | # <span class="solution">Funkcija <code>m()</code> koja je prijatelj klasi <code>A</code> može biti globalna funkcija.</span> | ||
| Ред 482: | Ред 482: | ||
=== 8. zadatak === | === 8. zadatak === | ||
Koji od sledećih operatora se moraju preklopiti kao nestatički metodi u jeziku C++? | Koji od sledećih operatora se moraju preklopiti kao nestatički metodi u jeziku C++? | ||
<div class="abc-list"> | <div class="abc-list" data-solution="multiple"> | ||
# <span class="solution"><code>operator[]</code></span> | # <span class="solution"><code>operator[]</code></span> | ||
# <span class="solution"><code>operator=</code></span> | # <span class="solution"><code>operator=</code></span> | ||
| Ред 532: | Ред 532: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Odgovor: <span class="spoiler">32</span> | Odgovor: <span class="spoiler" data-solution="text">32</span> | ||
[[Категорија:Рокови]] | [[Категорија:Рокови]] | ||
[[Категорија:ОО1]] | [[Категорија:ОО1]] | ||
Верзија на датум 30. јун 2021. у 16:12
- За питања са више одговора, тачни одговори су подебљани и уоквирени
- За питања за које се одговори уносе, тачни одговори су подвучени и сакривени, тако да се прикажу када изаберете тај текст (пример: овако)
- Притисните лево дугме испод за сакривање и откривање свих одговора, или десно дугме за укључивање и искључивање интерактивног режима:
Prvi test
Na svakom pitanju je bilo ili moguće izabrati jedno ili više rešenja ili uneti odgovor u polje.
1. zadatak
Prilikom reupotrebe objektno orijentisanog koda izvođenjem, u načelu se stari kod (postojeća klasa - osnova za izvođenje):
- ne mora menjati ni ponovo prevoditi i testirati.
- ne mora menjati, ali se mora ponovo prevoditi i testirati.
- ne mora menjati, mora ponovo prevoditi, ali se ne mora ponovo testirati.
- mora menjati i ponovo prevoditi i testirati.
- uopšte ne može iskoristiti.
2. zadatak
Koja naredba omogućava korišćenje imena X iz prostora imena Y prostim imenovanjem X, ukoliko ne postoji konflikt imena?
decltype Y;using namespace Y;using Y::X;namespace Y.X;using Y;
3. zadatak
Šta ispisuje sledeći program na jeziku 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];
}
Odgovor: 4
4. zadatak
Šta je dozvoljeno da stoji na mestu naredbe ###?
#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;
###
}
a2.z=1;a1.y=1;a2.y=1;a1.x=1;a1.z=1;a2.x=1;
5. zadatak
Koje funkcije su ispravne, jer vraćaju referencu na "živ" objekat?
int& f(int &i){int r=i; return r; }int& f(int i){return i; }int& f(int &i){return *new int(i); }int& f(int &i){int &r=*new int(i); return r; }int& f(int &i){return i; }int& f(int &i){int r=*new int(i); return r; }
6. zadatak
Koji od sledećih iskaza su tačni na jeziku C++?
- Klasa može imati više privatnih sekcija.
- Iz metoda pozvanog za neki objekat se ne može pristupiti privatnom atributu drugog objekta iste klase.
- Javnoj sekciji klase mogu pristupati samo javni metodi klase, a privatnoj sekciji samo privatni metodi.
- Članovima u privatnoj sekciji klase može pristupati samo javni metod iste klase.
- Podrazumevana sekcija klase je javna.
7. zadatak
Za nepromenljiv i nepostojan (const volatile) objekat klase mogu da se pozivaju metodi te klase sa navedenim sledećim modifikatorima (koji određuju prirodu tekućeg objekta):
inlineconstvolatileconst volatile- bez modifikatora
8. zadatak
Neka je data definicija klase Test
class Test{
Test(){}
};
Za koje od sledećih linija koda u funkciji main() će prevodilac prijaviti grešku?
Test test;Test* test = new Test();Test test();Test* test;Test test{};
9. zadatak
Šta ispisuje dati program na jeziku 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;
}
Odgovor: ABA1C1
10. zadatak
Koja tvrđenja su tačna za dati programski kod napisan na jeziku C++?
class A {
int i;
public:
A(int ii=2) { i = ii; }
};
- Klasa A ima konverzioni konstruktor.
- Klasa A ima jedan konstruktor.
- Objekat klase A se može stvoriti pozivanjem konstruktora koji nema nijedan parametar.
- Objekat klase A se može stvoriti pozivanjem konstruktora koji ima jedan argument.
- Klasa A nema podrazumevani konstruktor.
Drugi test
1. zadatak
- Isti zadatak se našao i na probnom kolokvijumu za IR.
Koji od sledećih operatora se moraju preklopiti kao nestatički metodi u jeziku C++?
operator()operator[]operator<<operator=operator+
2. zadatak
- Isti zadatak se našao i na probnom kolokvijumu za IR.
Povezati operatore sa odgovarajućom tipičnom primenom:
| Asocijativni pristup elementu zbirke a. |
|
| Računanje vrednosti polinoma u tački b. | |
| Pametni pokazivač c. |
3. zadatak
- Isti zadatak se našao i na probnom kolokvijumu za IR.
Šta ispisuje sledeći program na programskom jeziku C++? Ukoliko se program ne prevodi u polje za odgovor treba upisati vrednost 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;
}
Odgovor: 32
4. zadatak
Koje tvrdnje su tačne?
- Operator
deletemože imati proizvoljan broj argumenata. - U preklopljenom operatoru
newtreba, kao poslednju naredbu, napisati eksplicitan poziv konstruktora klase za koju se operator preklapa. - Klasa može imati više preklopljenih
deleteoperatora za pojedinačne objekte. - Operatori
newideletese preklapaju kao statički metodi klase. - Klasa može imati više preklopljenih operatora
newza nizove.
5. zadatak
Koja od sledećih tvrdnji u vezi izvođenja klasa su tačna u jeziku C++?
- Iz klase označene modifikatorom
finalnije moguće dalje izvođenje. - Dozvoljeno je sledeće izvođenje:
class A : B { }; class B : A { };
- Podrazumevan način izvođenja je zaštićen (
protected). - Izvedena klasa ne nasleđuje konstruktore, destruktor i operatore
operator=iz osnovne klase. - Izvođenje može biti javno (
public), zaštićeno (protected) ili privatno (private).
6. zadatak
Koji iskazi su tačni? Izaberite jedan odgovor:
- Privatnim izvođenjem uspostavlja se relacija sadržanja između objekta izvedene klase i nasleđenog podobjekta osnovne klase.
- Objekat zaštićeno izvedene klase je jedna vrsta objekta osnovne klase u svakoj globalnoj funkciji.
- Objekat javno izvedene klase nasleđuje samo implementaciju osnovne klase, ne i ugovor.
- Kod privatnog izvođenja nasleđuje se ugovor osnovne klase.
- Javnim izvođenjem se samo uspostavlja relacija sadržanja između objekta izvedene klase i nasleđenog podobjekta osnovne klase.
7. zadatak
Šta ispisuje sledeći program na jeziku 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];
}
- CAABCAAB
- ACBACB
- AACBAACB
- ACABACAB
8. zadatak
Šta ispisuje sledeći programski kod:
#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;
}
Odgovor: 221
9. zadatak
Šta treba da stoji umesto *** da bi dati program na jeziku C++ ispisao BA? Izaberite jedan ili više odgovora.
#include <iostream>
using namespace std;
class A {
public:
***
};
class B: public A {
public:
~B() { cout << "B"; }
};
int main() {
A *a = new B();
delete a;
}
- ~A() { cout << "A"; }
- ~A() { cout << "BA"; }
- virtual ~A() { cout << "BA"; }
- virtual ~A() { cout << "A"; }
10. zadatak
Koje tvrdnje su tačne?
- Višestrukim izvođenjem se smatra izvođenje iz više klasa koje nisu u uzajamnom odnosu izvođenja (nasleđivanja).
- Višestrukim izvođenjem se smatra izvođenje u kojem je jedna klasa roditelj većeg broja klasa.
- Višestrukim izvođenjem se smatra izvođenje iz već izvedene klase.
- Višestrukim izvođenjem se smatra izvođenje iz klase iz koje su već izvedene neke druge klase.
- Višestrukim izvođenjem se nasleđuju ugovori i implementacije svih roditeljskih klasa.
IR kolokvijum
1. zadatak
Prostor na steku se dodeljuje:
- Lokalnim statičkim objektima
- Globalnim statičkim objektima
- Argumentima (parametrima) funkcija
- Dinamičkim objektima
- Lokalnim automatskim objektima
2. zadatak
Šta ispisuje sledeći program na programskom jeziku 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;
}
- 133
- 233
- Programski kod se ne prevodi.
- 132
- 232
3. zadatak
Koje tvrđenje je tačno?
- Mehanizam preklapanje[sic] imena funkcija je potpuno statički, koja funkcija će se pozvati određuje se u vreme prevođenja.
- Mehanizam preklapanje[sic] imena funkcija je potpuno dinamički, koja funkcija će se pozvati određuje se u vreme izvršavanja.
- Mehanizam preklapanje[sic] imena funkcija je potpuno statički, koja funkcija će se pozvati određuje se u vreme izvršavanja.
- Mehanizam preklapanje[sic] imena funkcija je potpuno dinamički, koja funkcija će se pozvati određuje se u vreme prevođenja.
4. zadatak
Koja tvrđenja su tačna na programskom jeziku C++?
- Metodi
int f() & { return 1; }iint f() && { return 3; }mogu postojati u istoj klasi. - Metodi
int f() & { return 1; }iint f() const & { return 3; }mogu postojati u istoj klasi. - Metodi
int f() & { return 1; }ivoid f() & { }mogu postojati u istoj klasi.
5. zadatak
Šta ispisuje sledeći program napisan na programskom jeziku C++? Ukoliko da se program ne prevodi unesite 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;
}
Odgovor: 268
6. zadatak
Šta ispisuje dati program na jeziku 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;
}
Odgovor: 41
7. zadatak
Koja su tvrđenja tačna za prijateljske (friend) funkcije i klase?
- Ako je klasa
Aprijatelj klaseBi klasaBprijatelj klaseC, onda je i klasaAprijatelj klaseC. - Funkcija
m()koja je prijatelj klasiAmože biti globalna funkcija. - Ako klasa
Aproglasi klasuBza prijatelja, metodi klaseAimaju pristup do privatnih polja klaseB - Prijateljstvo između klasa je simetrična relacija.
- Funkcija
m()koja je prijatelj klasiAmože biti metod klaseB.
8. zadatak
Koji od sledećih operatora se moraju preklopiti kao nestatički metodi u jeziku C++?
operator[]operator=operator()operator+operator<<
9. zadatak
Povezati operatore sa odgovarajućom tipičnom primenom:
| Asocijativni pristup elementu zbirke a. |
|
| Računanje vrednosti polinoma u tački b. | |
| Pametni pokazivač c. |
10. zadatak
Šta ispisuje sledeći program na programskom jeziku C++? Ukoliko se program ne prevodi u polje za odgovor treba upisati vrednost 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;
}
Odgovor: 32