我(错误地)在我的程序中有以下任务:
std::shared_ptr<SI::Program> m_program; // in class
m_program = std::make_unique<SI::Program>(); // in method
当我发现这个时,我首先想知道为什么它甚至可以编译。事实证明,对象shared_ptr
有一个特殊的移动赋值运算符unique_ptr
。
我的问题是,这样做是否总是安全的,还是有任何影响?
(代码执行安全;代码审查显然不安全......)