Zkouska 22.1.2016

Základní kurs objektově orientovaného programování v C++. Třídy a objekty, zapouzdření, metody, plymorfismus. Abstraktní datové typy, přetěžování. Kontejnery, iterátory, algoritmy. Šablony, generické programování, kompilační polymorfismus. Výjimky. Bezpečné a přenositelné programování, vazby na OS.
lukyj
Matfyz(ák|ačka) level I
Příspěvky: 3
Registrován: 22. 1. 2016 15:15
Typ studia: Informatika Bc.

Zkouska 22.1.2016

Příspěvek od lukyj »

Dnesni zkouska z c++:
vicemene jako socketka (http://forum.matfyz.info/viewtopic.php?f=423&t=8125 ), ale par otazek na unique_ptr.

Kód: Vybrat vše

Class T {
int a; int b; 
}

std::unique_ptr<T> f (std::unique_ptr<T> a, const std::unique_ptr<T>& b) {
}
Co muze byt v tele f?
Moznosti:

Kód: Vybrat vše

a) return std::move(a);
b) return std::move(b);
c) return std::make_unque<T>(a);
d) return b;
Spravne IMHO pouze a

Dalsi otazka, ktera nebyla v socketce bylo:
Jak spravne dynamicky alokovat objekt T?
Moznosti:

Kód: Vybrat vše

a) auto& x = std::make_unique<T>();
b) T& x = std::make_unique<T>();
c) T x = new T;
d) auto x = std::make_unique<T>(); // jedina spravna moznost
Necht mame tridu Base a z ni odvozene Ellipse a Rectangle. Ukladame je v std::vector<Base*> vec;
Jak spravne ulozit Rectangle do vectoru?
Moznosti:

Kód: Vybrat vše

a) vec.push_back(new Rectangle); // Jedina spravna odpoved
b) vec.push_back(Rectangle());
c) vec.push_back(*new Rectangle)
d) {Rectangle r; vec.push_back(&r);} // projde compilatorem, ale pozdeji muze rozbit zasobnik - Rectangle se smazu hned jak se vyleze ze scopu, odkaz bude neplatny  - spravne je NE

Zbytek otazek lze najit zde na foru....
\copyright Vypracovano ve spolupraci Martin Wirthem
Odpovědět

Zpět na „NPRG041 Programování v C++“