我对
我的目标是将一个基类的unique_ptr转换为一个派生类的
所以我找到了这个问题 和答案是:
unique_ptr.release()
感到困惑。我的目标是将一个基类的unique_ptr转换为一个派生类的
unique_ptr
。所以我找到了这个问题 和答案是:
Derived *tmp = dynamic_cast<Derived*>(basePointer.get());
std::unique_ptr<Derived> derivedPointer;
if(tmp != nullptr)
{
basePointer.release();
derivedPointer.reset(tmp);
}
或者
std::unique_ptr<Derived>
derivedPointer(static_cast<Derived*>(basePointer.release()));
我在想,在执行 basePointer.release();
后,基础指针会发生什么。
根据这个问题,我理解它会导致内存泄漏。
我的理解正确吗?