Zkouska 22.1.2016

lukyj at 2016-01-22 15:24:24

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

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:

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:

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:

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