When new is used by derived classes, you must define explicit destructors, copy constructors, and assignment operators for derivation.
(This assumes that the Hasdma class inherits from the Basedma class)
An explicit destructor:
// takes care of BASEDMA stuff { delete [] label;} HASDMA::~hasdma () { delete [] style;}
Copy constructor:
BASEDMA::BASEDMA (const BASEDMA & rs) { newchar1]; std::strcpy (label, Rs.label); = rs.rating;} HASDMA::HASDMA (const HASDMA & HS) : BASEDMA (HS) { newChar 1]; std::strcpy (style, Hs.style);}
Assignment operators:
BASEDMA & BASEDMA::operator=(ConstBASEDMA &RS) { if( This= = &rs)return* This; Delete[] label; Label=New Char[Std::strlen (Rs.label) +1]; std::strcpy (label, Rs.label); Rating=rs.rating; return* This;} HASDMA& HASDMA::operator=(ConstHASDMA &HS) { if( This= = &HS)return* This; BASEDMA::operator= (HS);//Copy Base portion Delete[] style;//prepare for new stylestyle =New Char[Std::strlen (Hs.style) +1]; stdllstrcpy (style, hs.style); return* This;}
Inheritance and dynamic memory allocation--you need to define explicit destructors, copy constructors, and assignment operators for inheriting classes