. , , , , . . , , . delete , , .
, - . - . std::unique_ptr std::shared_ptr. , , . , std::unique_ptr, Dependent :
class Dependent
{
public:
Dependent(std::unique_ptr<Exogenous> exo) : exo_(std::move(exo)) {}
double getSomething() const { exo_->interfaceMethod(); }
private:
std::unique_ptr<Exogenous> exo_;
}
:
std::unique_ptr<Exogenous> ptr(new ExogenousVariationA());
Dependent dep(std::move(ptr));
, std::unique_ptr, . , std::unique_ptr ( , Dependent , ).
, std::shared_ptr, , std::shared_ptr.