<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vruckacamak</id>
	<title>SI Wiki - Кориснички доприноси [sr]</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vruckacamak"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/wiki/%D0%9F%D0%BE%D1%81%D0%B5%D0%B1%D0%BD%D0%BE:%D0%94%D0%BE%D0%BF%D1%80%D0%B8%D0%BD%D0%BE%D1%81%D0%B8/Vruckacamak"/>
	<updated>2026-06-04T04:23:16Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E1/%D0%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2020&amp;diff=7158</id>
		<title>ОО1/Пробни тестови 2020</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%9E%D0%9E1/%D0%9F%D1%80%D0%BE%D0%B1%D0%BD%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B8_2020&amp;diff=7158"/>
		<updated>2024-01-08T20:34:29Z</updated>

		<summary type="html">&lt;p&gt;Vruckacamak: /* 5. zadatak */ slovna greska :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{rešenja}}&lt;br /&gt;
&lt;br /&gt;
== Prvi test ==&lt;br /&gt;
Na svakom pitanju je bilo ili moguće izabrati jedno ili više rešenja ili uneti odgovor u polje.&lt;br /&gt;
&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Prilikom reupotrebe objektno orijentisanog koda izvođenjem, u načelu se stari kod (postojeća klasa - osnova za izvođenje):&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ne mora menjati ni ponovo prevoditi i testirati.&amp;lt;/span&amp;gt;&lt;br /&gt;
# ne mora menjati, ali se mora ponovo prevoditi i testirati.&lt;br /&gt;
# ne mora menjati, mora ponovo prevoditi, ali se ne mora ponovo testirati.&lt;br /&gt;
# mora menjati i ponovo prevoditi i testirati.&lt;br /&gt;
# uopšte ne može iskoristiti.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Koja naredba omogućava korišćenje imena X iz prostora imena Y prostim imenovanjem X, ukoliko ne postoji konflikt imena?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;decltype Y;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;using namespace Y;&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;using Y::X;&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;namespace Y.X;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;using Y;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći program na jeziku C++?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
struct S1{&lt;br /&gt;
  int a;&lt;br /&gt;
  int b;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct S2{&lt;br /&gt;
  S1 a;&lt;br /&gt;
  int b[3][2];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  S2 s={1,2,{{3},{},{4,5}}};&lt;br /&gt;
  std::cout&amp;lt;&amp;lt;s.b[2][0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;4&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;1 i 2 odgovaraju poljima a i b strukture S1. &amp;lt;code&amp;gt;{{3},{},{4,5}}&amp;lt;/code&amp;gt; predstavlja inicijalizaciju niza, prošireno predstavljenu kao &amp;lt;code&amp;gt;{{3, 0}, {0, 0}, {4, 5}}&amp;lt;/code&amp;gt;. Na kraju se iz trećeg niza iz polja b (&amp;lt;code&amp;gt;{4, 5}&amp;lt;/code&amp;gt;) ispisuje prvi element.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
Šta je dozvoljeno da stoji na mestu naredbe &amp;lt;code&amp;gt;###&amp;lt;/code&amp;gt;?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
struct A{&lt;br /&gt;
    A(){}; //podrazumevani konstruktor strukture A&lt;br /&gt;
    int x;&lt;br /&gt;
    const int y=1;&lt;br /&gt;
    mutable int z;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main(){&lt;br /&gt;
    A a1;&lt;br /&gt;
    const A a2;&lt;br /&gt;
    ###&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;a2.z=1;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;a1.y=1;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;a2.y=1;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;a1.x=1;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;a1.z=1;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;a2.x=1;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Koje funkcije su ispravne, jer vraćaju referencu na &amp;quot;živ&amp;quot; objekat?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;int&amp;amp; f(int &amp;amp;i){int r=i;  return r; }&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;int&amp;amp; f(int i){return i; }&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;int&amp;amp; f(int &amp;amp;i){return *new int(i); }&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;int&amp;amp; f(int &amp;amp;i){int &amp;amp;r=*new int(i); return r; }&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;int&amp;amp; f(int &amp;amp;i){return i; }&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;int&amp;amp; f(int &amp;amp;i){int r=*new int(i); return r; }&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Prva funkcija vraća referencu na lokalnu promenljivu u koju je kopirana vrednost. Druga funkcija isto, ali se kopiranje dešava pri prosleđivanju argumenata. Šesta funkcija alocira objekat na hipu, ali onda njegovu vrednost kopira u lokalnu promenljivu pa vraća referencu na tu promenljivu.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
Koji od sledećih iskaza su tačni na jeziku C++?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Klasa može imati više privatnih sekcija.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Iz metoda pozvanog za neki objekat se ne može pristupiti privatnom atributu drugog objekta iste klase.&lt;br /&gt;
# Javnoj sekciji klase mogu pristupati samo javni metodi klase, a privatnoj sekciji samo privatni metodi.&lt;br /&gt;
# Članovima u privatnoj sekciji klase može pristupati samo javni metod iste klase.&lt;br /&gt;
# Podrazumevana sekcija klase je javna.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Za nepromenljiv i nepostojan (&amp;lt;code&amp;gt;const volatile&amp;lt;/code&amp;gt;) objekat klase mogu da se pozivaju metodi te klase sa navedenim sledećim modifikatorima (koji određuju prirodu tekućeg objekta):&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;inline&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;volatile&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;const volatile&amp;lt;/code&amp;gt;&lt;br /&gt;
# bez modifikatora&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Neka je data definicija klase Test&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class Test{&lt;br /&gt;
    Test(){}&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Za koje od sledećih linija koda u funkciji main() će prevodilac prijaviti grešku?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;Test test;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;Test* test = new Test();&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Test test();&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;Test* test;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;Test test{};&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Podrazumevani konstruktor se nalazi u privatnoj sekciji. Opcija pod c je deklaracija metode a opcija pod d ne pravi objekat uopšte.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Šta ispisuje dati program na jeziku C++?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
public:&lt;br /&gt;
    A() { cout &amp;lt;&amp;lt; &amp;quot;A&amp;quot;; }&lt;br /&gt;
    A(int a) { cout &amp;lt;&amp;lt; &amp;quot;A&amp;quot; &amp;lt;&amp;lt; a; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class B {&lt;br /&gt;
    A a;&lt;br /&gt;
public:&lt;br /&gt;
    B() { cout &amp;lt;&amp;lt; &amp;quot;B&amp;quot;; }&lt;br /&gt;
    B(int b) { cout &amp;lt;&amp;lt; &amp;quot;B&amp;quot; &amp;lt;&amp;lt; b; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class C {&lt;br /&gt;
    B b;&lt;br /&gt;
    A a;&lt;br /&gt;
public:&lt;br /&gt;
    C() { cout &amp;lt;&amp;lt; &amp;quot;C&amp;quot;; }&lt;br /&gt;
    C(int c) : a(c) { cout &amp;lt;&amp;lt; &amp;quot;C&amp;quot; &amp;lt;&amp;lt; c; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    C c(1);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;ABA1C1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Inicijalizuje se klasa C konstruktorom sa jednim argumentom. Odatle kreće inicijalizacija njenog atributa tipa B, kada se poziva podrazumevani konstruktor. B sadrži objekat klase A, pa se podrazumevanim konstruktorom inicijalizuje A i ispisuje A. Tada je gotova inicijalizacija atributa klase B i inicijalizacija B se završava ispisivanjem B. Zatim se prelazi na inicijalizaciju atributa tipa A klase C, ali konstruktorom sa jednim argumentom jer tako piše u inicijalizacionoj listi, pa se ispisuje A1. Na kraju se ispisuje C1.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
Koja tvrđenja su tačna za dati programski kod napisan na jeziku C++?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class A {&lt;br /&gt;
   int i;&lt;br /&gt;
public:&lt;br /&gt;
   A(int ii=2) { i = ii; }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Klasa A ima konverzioni konstruktor.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Klasa A ima jedan konstruktor.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Objekat klase A se može stvoriti pozivanjem konstruktora koji nema nijedan parametar.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Objekat klase A se može stvoriti pozivanjem konstruktora koji ima jedan argument.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Klasa A nema podrazumevani konstruktor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Drugi test ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
: &#039;&#039;Isti zadatak se našao i na [[#8. zadatak 3|probnom kolokvijumu za IR]].&#039;&#039;&lt;br /&gt;
Koji od sledećih operatora se moraju preklopiti kao nestatički metodi u jeziku C++?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;operator()&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;operator[]&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;operator&amp;lt;&amp;lt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;&amp;lt;code&amp;gt;operator=&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;operator+&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
: &#039;&#039;Isti zadatak se našao i na [[#9. zadatak 3|probnom kolokvijumu za IR]].&#039;&#039;&lt;br /&gt;
Povezati operatore sa odgovarajućom tipičnom primenom:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;operator[], operator(), operator-&amp;amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
# Računanje vrednosti polinoma u tački &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;operator()&amp;lt;/span&amp;gt;&lt;br /&gt;
# Pametni pokazivač &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;operator-&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Asocijativni pristup elementu zbirke &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;operator[]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
: &#039;&#039;Isti zadatak se našao i na [[#10. zadatak 3|probnom kolokvijumu za IR]].&#039;&#039;&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku C++? Ukoliko se program ne prevodi u polje za odgovor treba upisati vrednost 0.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class B;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
public: &lt;br /&gt;
    A(int i) {}&lt;br /&gt;
    A(const B &amp;amp;b) { std::cout &amp;lt;&amp;lt; &amp;quot;1&amp;quot;; }&lt;br /&gt;
    A&amp;amp; operator=(const A&amp;amp; a) { std::cout &amp;lt;&amp;lt; &amp;quot;2&amp;quot;; return *this; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class B {&lt;br /&gt;
public: &lt;br /&gt;
    operator A() { std::cout &amp;lt;&amp;lt; &amp;quot;3&amp;quot;; return 1; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    B b;&lt;br /&gt;
    A a(1);&lt;br /&gt;
    a = b;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;32&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Operator = klase A prima argument tipa A, pa mora da se desi konverzija iz B u A. Ovde izgleda kao da je konverzija dvoznačna, jer može da se izvrši i preko konverzionong konstruktora klase A, i preko operatora konverzije klase B, ali nije. Naime, konverzioni konstruktor klase A prima argument koji ima &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; kvalifikator, dok operator konverzije nema &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; specifikator, pa konverzija ide preko operatora konverzije i ispisuje se 3. Nakon toga se izvrši operator dodele i ispiše 2.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
Koje tvrdnje su tačne?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Operator &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt; može imati proizvoljan broj argumenata.&lt;br /&gt;
# U preklopljenom operatoru &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt; treba, kao poslednju naredbu, napisati eksplicitan poziv konstruktora klase za koju se operator preklapa.&lt;br /&gt;
# Klasa može imati više preklopljenih &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt; operatora za pojedinačne objekte.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Operatori &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt; se preklapaju kao statički metodi klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Klasa može imati više preklopljenih operatora &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt; za nizove.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Koja od sledećih tvrdnji u vezi izvođenja klasa su tačna u jeziku C++?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Iz klase označene modifikatorom &amp;lt;code&amp;gt;final&amp;lt;/code&amp;gt; nije moguće dalje izvođenje.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dozvoljeno je sledeće izvođenje: &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
class A : B { };&lt;br /&gt;
class B : A { };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Podrazumevan način izvođenja je zaštićen (&amp;lt;code&amp;gt;protected&amp;lt;/code&amp;gt;).&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Izvedena klasa ne nasleđuje konstruktore, destruktor i operatore &amp;lt;code&amp;gt;operator=&amp;lt;/code&amp;gt; iz osnovne klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Izvođenje može biti javno (&amp;lt;code&amp;gt;public&amp;lt;/code&amp;gt;), zaštićeno (&amp;lt;code&amp;gt;protected&amp;lt;/code&amp;gt;) ili privatno (&amp;lt;code&amp;gt;private&amp;lt;/code&amp;gt;).&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
Koji iskazi su tačni? Izaberite jedan odgovor:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Privatnim izvođenjem uspostavlja se relacija sadržanja između objekta izvedene klase i nasleđenog podobjekta osnovne klase.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Objekat zaštićeno izvedene klase je jedna vrsta objekta osnovne klase u svakoj globalnoj funkciji.&lt;br /&gt;
# Objekat javno izvedene klase nasleđuje samo implementaciju osnovne klase, ne i ugovor.&lt;br /&gt;
# Kod privatnog izvođenja nasleđuje se ugovor osnovne klase.&lt;br /&gt;
# Javnim izvođenjem se samo uspostavlja relacija sadržanja između objekta izvedene klase i nasleđenog podobjekta osnovne klase.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći program na jeziku C++?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
public:&lt;br /&gt;
    A() { cout &amp;lt;&amp;lt; &amp;quot;A&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class C {&lt;br /&gt;
public:&lt;br /&gt;
    C() { cout &amp;lt;&amp;lt; &amp;quot;C&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class B: public A {&lt;br /&gt;
    C c; A a;&lt;br /&gt;
public:&lt;br /&gt;
    B():c(), A(), a() { cout &amp;lt;&amp;lt; &amp;quot;B&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    B b[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# CAABCAAB&lt;br /&gt;
# ACBACB&lt;br /&gt;
# AACBAACB&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;ACABACAB&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Prvo se inicijalizuje podobjekat A, a zatim atributi tipa C a zatim A, i na kraju se poziva konstruktor B. Redosled u inicijalizatorskoj listi nije bitan. Pošto se prave dva objekta u nizu, ispisuje se dva puta.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći programski kod:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class O {&lt;br /&gt;
public:&lt;br /&gt;
    virtual void m() { cout &amp;lt;&amp;lt; &amp;quot;1&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class I : public O {&lt;br /&gt;
public:&lt;br /&gt;
    virtual void m() override { cout &amp;lt;&amp;lt; &amp;quot;2&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    O * p = new I();&lt;br /&gt;
    O o = *p;&lt;br /&gt;
    &lt;br /&gt;
    p-&amp;gt;m();&lt;br /&gt;
    (*p).m();&lt;br /&gt;
    o.m();&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;221&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Poziv metode preko objekta je nepolimorfan (treći slučaj), dok je poziv preko reference ili pokazivača polimorfan (prvi i drugi slučaj). Dereferenciranje vraća referencu, u ovom slučaju ne mora da se desi kopija objekta.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Šta treba da stoji umesto *** da bi dati program na jeziku C++ ispisao BA? Izaberite jedan ili više odgovora.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
public:&lt;br /&gt;
    ***&lt;br /&gt;
};&lt;br /&gt;
class B: public A {&lt;br /&gt;
public:&lt;br /&gt;
    ~B() { cout &amp;lt;&amp;lt; &amp;quot;B&amp;quot;; }&lt;br /&gt;
};&lt;br /&gt;
int main() {&lt;br /&gt;
    A *a = new B();&lt;br /&gt;
    delete a;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# ~A() { cout &amp;lt;&amp;lt; &amp;quot;A&amp;quot;; }&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;~A() { cout &amp;lt;&amp;lt; &amp;quot;BA&amp;quot;; }&amp;lt;/span&amp;gt;&lt;br /&gt;
# virtual ~A() { cout &amp;lt;&amp;lt; &amp;quot;BA&amp;quot;; }&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;virtual ~A() { cout &amp;lt;&amp;lt; &amp;quot;A&amp;quot;; }&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Ukoliko je destruktor virtuelan, pozvaće se destruktor i osnovne klase. Validna alternativa jeste da nevirtuelni destruktor samo ispiše traženi tekst.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
Koje tvrdnje su tačne?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Višestrukim izvođenjem se smatra izvođenje iz više klasa koje nisu u uzajamnom odnosu izvođenja (nasleđivanja).&amp;lt;/span&amp;gt;&lt;br /&gt;
# Višestrukim izvođenjem se smatra izvođenje u kojem je jedna klasa roditelj većeg broja klasa.&lt;br /&gt;
# Višestrukim izvođenjem se smatra izvođenje iz već izvedene klase.&lt;br /&gt;
# Višestrukim izvođenjem se smatra izvođenje iz klase iz koje su već izvedene neke druge klase.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Višestrukim izvođenjem se nasleđuju ugovori i implementacije svih roditeljskih klasa.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IR kolokvijum ==&lt;br /&gt;
=== 1. zadatak ===&lt;br /&gt;
Prostor na steku se dodeljuje:&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Lokalnim statičkim objektima&lt;br /&gt;
# Globalnim statičkim objektima&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Argumentima (parametrima) funkcija&amp;lt;/span&amp;gt;&lt;br /&gt;
# Dinamičkim objektima&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Lokalnim automatskim objektima&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku C++?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
int&amp;amp; f(int &amp;amp;x) {&lt;br /&gt;
    return ++x;&lt;br /&gt;
}&lt;br /&gt;
int main() {&lt;br /&gt;
    int x = 1;&lt;br /&gt;
    int z = 1;&lt;br /&gt;
    auto y = f(z);&lt;br /&gt;
    y++;&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; y &amp;lt;&amp;lt; z;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# 133&lt;br /&gt;
# 233&lt;br /&gt;
# Programski kod se ne prevodi.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;132&amp;lt;/span&amp;gt;&lt;br /&gt;
# 232&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;&amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;, za razliku od &amp;lt;code&amp;gt;decltype&amp;lt;/code&amp;gt; ne zadržava da li je tip bio referenca ili pokazivač, pa je tip &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; samo &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; i promena nad &amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt; se ne oslikava nad &amp;lt;code&amp;gt;z&amp;lt;/code&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. zadatak ===&lt;br /&gt;
Koje tvrđenje je tačno?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;single&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Mehanizam preklapanje&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; imena funkcija je potpuno statički, koja funkcija će se pozvati određuje se u vreme prevođenja.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Mehanizam preklapanje&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; imena funkcija je potpuno dinamički, koja funkcija će se pozvati određuje se u vreme izvršavanja.&lt;br /&gt;
# Mehanizam preklapanje&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; imena funkcija je potpuno statički, koja funkcija će se pozvati određuje se u vreme izvršavanja.&lt;br /&gt;
# Mehanizam preklapanje&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; imena funkcija je potpuno dinamički, koja funkcija će se pozvati određuje se u vreme prevođenja.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. zadatak ===&lt;br /&gt;
Koja tvrđenja su tačna na programskom jeziku C++?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metodi &amp;lt;code&amp;gt;int f() &amp;amp; { return 1; }&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;int f() &amp;amp;&amp;amp; { return 3; }&amp;lt;/code&amp;gt; mogu postojati u istoj klasi.&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Metodi &amp;lt;code&amp;gt;int f() &amp;amp; { return 1; }&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;int f() const &amp;amp; { return 3; }&amp;lt;/code&amp;gt; mogu postojati u istoj klasi.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Metodi &amp;lt;code&amp;gt;int f() &amp;amp; { return 1; }&amp;lt;/code&amp;gt; i &amp;lt;code&amp;gt;void f() &amp;amp; { }&amp;lt;/code&amp;gt; mogu postojati u istoj klasi.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći program napisan na programskom jeziku C++? Ukoliko se program ne prevodi unesite X.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class A&lt;br /&gt;
{&lt;br /&gt;
private:&lt;br /&gt;
    int b = 2;&lt;br /&gt;
    int c = 3;&lt;br /&gt;
public:&lt;br /&gt;
    A() : c(b+1), b(7) { b--; a = 2; }&lt;br /&gt;
    void pisi() { cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; b &amp;lt;&amp;lt; c; }&lt;br /&gt;
private:&lt;br /&gt;
    int a = 1;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    A obj;&lt;br /&gt;
    obj.pisi();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;268&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Pri inicijalizaciji objekta klase A polja b, c i a se prvo inicijalizuju na 7 (iz konstruktora), 8 (7+1) i 1, a zatim se u konstruktoru b smanji na 6 a a postavi na 2.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. zadatak ===&lt;br /&gt;
Šta ispisuje dati program na jeziku C++?&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
    static int stID;&lt;br /&gt;
    int ID = ++stID;&lt;br /&gt;
public:&lt;br /&gt;
    A() {}&lt;br /&gt;
    A(const A&amp;amp; a) {}&lt;br /&gt;
    A(A&amp;amp;&amp;amp; a) {}&lt;br /&gt;
    ~A() { cout &amp;lt;&amp;lt; ID; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int A::stID = 0;&lt;br /&gt;
&lt;br /&gt;
void f1(A&amp;amp; a) {}&lt;br /&gt;
void f2(A a) {}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    A x;&lt;br /&gt;
    for(int i = 0; i &amp;lt; 3; i++){&lt;br /&gt;
        A* y = new A;&lt;br /&gt;
        if (i == 1) f2(*y);&lt;br /&gt;
        if (i == 2) f1(*y);&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;41&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Stvara se objekat x, sa ID od 1. U prvoj iteraciji petlje se samo stvara objekat y sa ID od 2. U drugoj iteraciji petlje se ponovo stvara objekat y sa ID od 3, ali se prosleđuje metodi u kojoj se kopira i dobija ID od 4. Na kraju te metode se uništava i ispisuje 4. U trećoj iteraciji petlje se ponovo stvara objekat y sa ID od 5, pa se prosleđuje metodi u kojoj se ne kopira. Na kraju programa se uništava objekat x i ispisuje 1. Dinamički alocirani objekti nisu eksplicitno oslobođeni, pa njihovi destruktori nisu pozvani i memoriju koju oni zauzimaju će osloboditi operativni sistem.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 7. zadatak ===&lt;br /&gt;
Koja su tvrđenja tačna za prijateljske (&amp;lt;code&amp;gt;friend&amp;lt;/code&amp;gt;) funkcije i klase?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# Ako je klasa &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; prijatelj klase &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; i klasa &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; prijatelj klase &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, onda je i klasa &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; prijatelj klase &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Funkcija &amp;lt;code&amp;gt;m()&amp;lt;/code&amp;gt; koja je prijatelj klasi &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; može biti globalna funkcija.&amp;lt;/span&amp;gt;&lt;br /&gt;
# Ako klasa &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; proglasi klasu &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; za prijatelja, metodi klase &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; imaju pristup do privatnih polja klase &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;&lt;br /&gt;
# Prijateljstvo između klasa je simetrična relacija.&lt;br /&gt;
# &amp;lt;span class=&amp;quot;solution&amp;quot;&amp;gt;Funkcija &amp;lt;code&amp;gt;m()&amp;lt;/code&amp;gt; koja je prijatelj klasi &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; može biti metod klase &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;.&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 8. zadatak ===&lt;br /&gt;
Koji od sledećih operatora se moraju preklopiti kao nestatički metodi u jeziku C++?&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot; data-solution=&amp;quot;multiple&amp;quot;&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;operator[]&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;operator=&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code class=&amp;quot;solution&amp;quot;&amp;gt;operator()&amp;lt;/code&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;operator+&amp;lt;/code&amp;gt;&lt;br /&gt;
# &amp;lt;code&amp;gt;operator&amp;lt;&amp;lt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 9. zadatak ===&lt;br /&gt;
Povezati operatore sa odgovarajućom tipičnom primenom:&lt;br /&gt;
&amp;lt;div data-solution=&amp;quot;select&amp;quot; data-options=&amp;quot;operator[], operator(), operator-&amp;amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
# Računanje vrednosti polinoma u tački &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;operator()&amp;lt;/span&amp;gt;&lt;br /&gt;
# Pametni pokazivač &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;operator-&amp;amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
# Asocijativni pristup elementu zbirke &amp;lt;span class=&amp;quot;spoiler&amp;quot;&amp;gt;operator[]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 10. zadatak ===&lt;br /&gt;
Šta ispisuje sledeći program na programskom jeziku C++? Ukoliko se program ne prevodi u polje za odgovor treba upisati vrednost 0.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class B;&lt;br /&gt;
&lt;br /&gt;
class A {&lt;br /&gt;
public: &lt;br /&gt;
    A(int i) {}&lt;br /&gt;
    A(const B &amp;amp;b) { std::cout &amp;lt;&amp;lt; &amp;quot;1&amp;quot;; }&lt;br /&gt;
    A&amp;amp; operator=(const A&amp;amp; a) { std::cout &amp;lt;&amp;lt; &amp;quot;2&amp;quot;; return *this; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
class B {&lt;br /&gt;
public: &lt;br /&gt;
    operator A() { std::cout &amp;lt;&amp;lt; &amp;quot;3&amp;quot;; return 1; }&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    B b;&lt;br /&gt;
    A a(1);&lt;br /&gt;
    a = b;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Odgovor: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;text&amp;quot;&amp;gt;32&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Objašnjenje: &amp;lt;span class=&amp;quot;spoiler&amp;quot; data-solution=&amp;quot;explanation&amp;quot;&amp;gt;Operator = klase A prima argument tipa A, pa mora da se desi konverzija iz B u A. Ovde izgleda kao da je konverzija dvoznačna, jer može da se izvrši i preko konverzionong konstruktora klase A, i preko operatora konverzije klase B, ali nije. Naime, konverzioni konstruktor klase A prima argument koji ima &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; kvalifikator, dok operator konverzije nema &amp;lt;code&amp;gt;const&amp;lt;/code&amp;gt; specifikator, pa konverzija ide preko operatora konverzije i ispisuje se 3. Nakon toga se izvrši operator dodele i ispiše 2.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:ОО1]]&lt;/div&gt;</summary>
		<author><name>Vruckacamak</name></author>
	</entry>
</feed>