c++ - Smart pointers vs. value as member variables -


i have class has member variables of types m , n. lifetimes of objects supposed limited lifetime of a.

i'm considering

class {     m member1;     n member2; } 

vs.

class {     std::unique_ptr<m> member1;     std::unique_ptr<n> member2; } 

i'm not entirely sure better, since both accomplish want. lifetime of members bound object, , don't need manually manage memory. advantages , disadvantages of each setup?

use std::unique_ptr if

  1. m , n base classes of polymorphic hierarchies
  2. member1 , member2 optional members can nullptr
  3. m , n large enough cannot allocated on program stack

Comments