1-19 Random c++ Flashcards

1
Q

Који од показивача p1, p2 и p3 није исправно дефинисан у примеру?
int* p1,p2;
int* p3=(int*)1000;

A

Pokazivac p2.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

У каквом су односу дужине низова s1 и s2 у примеру:
char s1[] = “C++”;
char s2[] = { ‘C’, ‘+’, ‘+’ };

A

sizeof(S1) == 4
sizeof(s2) == 3

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

. Шта ће исписати овај програм?
int a = 1;
int* b=&a;
main(){
*b = a + 1;
*b = a + 1;
cout &laquo_space;a &laquo_space;endl;
}

A

3

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Који концепти програмског језика C++ се употребљавају да би се повећала (потенцијално
поновљена) употребљивост написаног кода?

A
  1. Polimorfizam
  2. Nasledjivanje
  3. Virtualno nasledjivanje
  4. Sabloni
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Који је редослед уништавања објеката у примеру:
int a(3);
main() {
int* n = new int(10);
int k(3);

delete n;
}

A

Tip int je primitivni tip a ne objekat. Ako bi promenljiva a predstavljala objekat, onda bi redosled unistavanja bio sledeci: Prvo ce se unistiti n, pa k, i na kraju a. ???

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Да ли је нека (која?) од наредних линија кода неисправна?
short* p = new short;
short* p = new short[900];
short* p = new short(900);
short** p = new short[900];

A

short** p ce vratiti gresku jer pokusavamo da mu dodelimo nesto sto je tipa short*

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Које операције класе Lista се извршавају у следећој наредби:
Lista l2 = Lista();

A
  1. alocira se memorija za objekat Lista
  2. poziva se eksplicitan konstruktor za objekat Lista

Zasto se ne poziva operator dodele?
Zasto se ne poziva konstruktor kopije?
The rule of three

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Колико пута се позива деструктор класе А у следећем програму?
main() {
A a, b;
A& c = a;
A* p = new A();
A* q = &b;
}

A

Tri puta, za a,b i p ovo ostalo su reference

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Шта су шаблони функција?

A

Sabloni funkcija predstavljaju specijalne funkcije koje rade sa generickim tipovima. Ukoliko nam je potrebno vise verzija iste funkcije samo sa razlicitim tipom podataka ili klasa, onda sablon funkcija moze da zameni tu grupu funkcija. Takodje konstante mogu da budu genericki parametri. U sustini sabloni nam omogucavaju genericko programiranje. Sabloni predstavljaju tip statickog polimorfizma tj. polimorfizam koji se obradjuje tokom kompilacije.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Како се пишу и користе шаблони функција?

A

template<typename>
T sum(T a, T b){
return a + b;
}
Ako napisemo sablon funkcije i ne koristimo u programu nijednom konkretnu funkciju, onda ce nam kompajler dati isti izvrsni kod kao da nismo ni pisali sablom. Kompajler prevodi sve konkretizovane funkcije nekog sablona. Isto vazi i za klase.</typename>

Ako definisemo konkretnu funkciju onda ona ima prioritet u odnosu na sablon i ona ce biti pozvana.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Написати шаблон функције која рачуна средњу вредност два броја за било који нумерички тип.

A

template <typename>
T avg(T x, T y){
return (x+y) /2;
}</typename>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Шта су шаблони класа?

A

template<typename a, typename b>
struct Pair{
A first;
B second;
Pair(A f, B s): first(f), second(s){}

Isto kao i sabloni funkcija, samo se odnosi na genericke klase. Primer generickih klasa su mape, vektori, skupovi,…, koji su vec deo C++-a

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Како се преводе шаблони класа?

A

Svi genericki tipovi se zamene sa konkretnim tipovima.
Primer:
Za vector<int> dobijamo tako sto zamenimo sva pojavljivanja generickog tipa "T" sa konkretnim tipom "int". Dobijeni kod kompilator moze prevesti na klasican nacin. Bitno je naglasiti da je ovaj proces statican.</int>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Шта је неопходан услов да би се позиви неког метода динамички везивали? Шта је довољан услов?

A

Neophodan: Metod mora biti virtuelan. Metod je virtuelan ako ima kljucnu rec “virtual”

Dovoljan: Objektu pristupamo preko reference ili preko pokazivaca

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Шта је виртуална функција?

A

Virtuelna funkcija (metod) su metode neke klase koje uz sebe imaju kljucnu rec “virtual”.U C++-u podrazumevano povezivanje je staticko . Ako zelimo da koristimo dinamicki polimorfizam, potrebno je naglasiti to kljucnom reci “virtual” i pozvati taj metod preko pokazivaca ili reference na objekat.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Шта је чисто виртуална функција?

A

CIsto virtualna funkcija je isto sto i apstraktna funkcija, predstavljaju sinonime. Cisto virtuelna funkcija je funkcija koja nema svoju implementaciju u okviru klase. Klasa koja sadrzi cisto virtualnu funkciju je apstraktna klasa. Cisto virtualnu metodu oznacavamo sa “=0” kao sufiks

17
Q

Шта је апстрактна класа?

A

Apstraktna klasa je klasa koja ima barem jednu cisto virtuelnu metodu. Apstraktna klasa ne moze da ima svoju instancu, ali mozemo imati pokazivac ili referencu na objekat apstrakne klase sto nam omogucava da koristimo dinamicki polimorfizam. Apstraktna klasa i dalje mooe da ima svoj konstruktor koji se poziva samo u okviru konstruktora klasa koje je
nasledjuju.

18
Q

Шта су уметнуте (inline) функције? Како се пишу

A

Umetnute “inline” funkcije su funkcije koje imaju prefiks “inline”. Predstavlja sugestiju kompajleru da “prosiri” funkciju na mestu gde je pozvana. Ideja je da se zaobidje postavljanje funkcije na “stackframe” i da se povecaju performanse.
Ovo predstavlja samo sugestiju. Kompajler odlucuje da li ce funkcija
zapravo biti prosirena. Funkcije koje nemaju “inline” takodje mogu biti prosirene.

19
Q

Шта су уметнути (inline) методи? Како се пишу?

A

Isto kao “inline” funkcije.