Для розв'язання цих проблем у мову були введені конструктори і деструктори. Конструктор викликається щоразу, коли створюється об'єкт даного типу; деструктор — при знищенні. При перетвореннях типів, присвоєнні, передачі параметра теж викликаються конструктори і при необхідності деструктори. З конструкторами і деструкторами клас виглядає так: class Array { public: Array() : len(0), val(NULL) {} Array(int _len) : len(_len) {val = new double[_len];} Array(const Array& a); ~Array() { Free(); } inline double Elem(int i); inline void ChangeElem(int i, double x); protected: void Alloc(int _len); void Free(); int len; double* val;