【发布时间】:2013-12-11 00:16:56
【问题描述】:
假设我有一个基类和一个派生类:
class Base
{
public:
virtual ~Base() {}
virtual void DoSomething() = 0;
};
class Child : public Base
{
public:
virtual void DoSomething()
{
// Do Something
}
};
用指向派生类实例的指针初始化基类类型的 std::auto_ptr 是否安全? IE。会像这样创建一个对象:
std::auto_ptr<Base> myObject(new Derived());
正确调用派生类的析构函数而不是基类而不泄漏内存?
【问题讨论】:
-
那个问题不依赖于auto_ptr,是吗?它适用于所有指针。如果你不能做到这一点,你就不能在 C++ 中拥有多态性,这将是可悲的。
-
@PeterSchneider 这个问题是针对 auto_ptr 的。主要是我想确定它的implementation didn't slice the object passed in,但我也想学习像虚拟析构函数那样的陷阱。
标签: c++ smart-pointers auto-ptr