Ergänzungen

Virtual Destructor:
Basisklassen, die virtual functions  enthalten, also potentiell polymorph benutzt, werden sollten immer einen virtual destructor deklarieren. Nur dann ist garantiert, dass auch Destructor der abgeleitetem Klasse gerufen wird \bgroup\color{green}\ensuremath{\Rightarrow}\egroup sonst memory leak!



class Shape {
  //..
  virtual ~Shape() =0; // declare virtual destructor
  //..
};
class Rectangle : public Shape {
  TwoDPoint * points; 
  Rectangle () { 
    points = new TwoDPoint[4]; // allocate memory for points
  };
  ~Rectangle () { 
    delete [] points;
  }
  // ..
}



Casting und Run-Time-Type ID:
Casting ( = Typumwandlung) sollte möglichst wenig benutzt werden, ist aber manchmal unvermeidlich. Im letzten Kurs wurden C-Style casts gezeigt:
int n = (int) 30.65;

Diese Art von casts sollte in C++ nicht mehr verwendet werden, stattdessen


GDuckeck 2019-08-01