1-19 Random c++ Flashcards
Који од показивача p1, p2 и p3 није исправно дефинисан у примеру?
int* p1,p2;
int* p3=(int*)1000;
Pokazivac p2.
У каквом су односу дужине низова s1 и s2 у примеру:
char s1[] = “C++”;
char s2[] = { ‘C’, ‘+’, ‘+’ };
sizeof(S1) == 4
sizeof(s2) == 3
. Шта ће исписати овај програм?
int a = 1;
int* b=&a;
main(){
*b = a + 1;
*b = a + 1;
cout «_space;a «_space;endl;
}
3
Који концепти програмског језика C++ се употребљавају да би се повећала (потенцијално
поновљена) употребљивост написаног кода?
- Polimorfizam
- Nasledjivanje
- Virtualno nasledjivanje
- Sabloni
Који је редослед уништавања објеката у примеру:
int a(3);
main() {
int* n = new int(10);
int k(3);
…
delete n;
}
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. ???
Да ли је нека (која?) од наредних линија кода неисправна?
short* p = new short;
short* p = new short[900];
short* p = new short(900);
short** p = new short[900];
short** p ce vratiti gresku jer pokusavamo da mu dodelimo nesto sto je tipa short*
Које операције класе Lista се извршавају у следећој наредби:
Lista l2 = Lista();
- alocira se memorija za objekat Lista
- poziva se eksplicitan konstruktor za objekat Lista
Zasto se ne poziva operator dodele?
Zasto se ne poziva konstruktor kopije?
The rule of three
Колико пута се позива деструктор класе А у следећем програму?
main() {
A a, b;
A& c = a;
A* p = new A();
A* q = &b;
}
Tri puta, za a,b i p ovo ostalo su reference
Шта су шаблони функција?
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.
Како се пишу и користе шаблони функција?
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.
Написати шаблон функције која рачуна средњу вредност два броја за било који нумерички тип.
template <typename>
T avg(T x, T y){
return (x+y) /2;
}</typename>
Шта су шаблони класа?
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
Како се преводе шаблони класа?
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>
Шта је неопходан услов да би се позиви неког метода динамички везивали? Шта је довољан услов?
Neophodan: Metod mora biti virtuelan. Metod je virtuelan ako ima kljucnu rec “virtual”
Dovoljan: Objektu pristupamo preko reference ili preko pokazivaca
Шта је виртуална функција?
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.