# Zkouska 22.1.2016

<{ForumPost(poster="lukyj", timestamp=2016-01-22 15:24:24)}>
Dnesni zkouska z c++:  
vicemene jako socketka ([http://forum.matfyz.info/viewtopic.php?f=423&t=8125](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
<{/ForumPost}>

