103. Destructors-I

Question.4

A base class pointer deletes a derived object:

class IDriver {
public:
   virtual void init() = 0;
   // No virtual destructor!
};

class UART : public IDriver {
   uint8_t* buffer;
public:
   UART() : buffer(new uint8_t[64]) {}
   ~UART() { delete[] buffer; }
   void init() override { /* ... */ }
};

IDriver* drv = new UART();
delete drv;  // Delete via base pointer

What happens?

Need Help? Refer to the Quick Guide below

Select Answer