Допустим, у меня есть базовый класс и производный класс:Можно ли инициализировать auto_ptr с указателем на производный класс?
class Base
{
public:
virtual ~Base() {}
virtual void DoSomething() = 0;
};
class Child : public Base
{
public:
virtual void DoSomething()
{
// Do Something
}
};
Безопасно ли инициализировать зЬй :: auto_ptr типа базового класса с указателем на экземпляр производного класса? И.Е. будет объект, созданный, как это:
std::auto_ptr<Base> myObject(new Derived());
правильно вызывать деструктор производного класса вместо базового класса без утечки памяти?
Этот вопрос не зависит от auto_ptr, не так ли? Он относится ко всем указателям. Если бы вы не могли этого сделать, у вас не было бы полиморфизма на C++, что было бы грустно. –
@PeterSchneider Этот вопрос относится только к auto_ptr. В основном я хотел убедиться, что его [реализация не срезала объект, переданный в] (http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c), но я также хотел узнать, что произошло, как о виртуальных деструкторах. – TwentyMiles