namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:beispiel:deepcopy

Kopie und Zuweisung, Besitz dynamischer Objekte

deepcopy.cpp
#include <iostream>
 
typedef int T;
 
class X
{
public:
  X(T const& t)      // Konstruktor erzeugt dynamisches Objekt
  : p(new T(t))   
  {
  }
  ~X()               // Destruktor gibt Speicher frei
  {
    delete p;
  }
  X(X const& rhs)    // Kopierkonstruktor erforderlich
  : p(new T(*rhs.p)) // hier: tiefe Kopie
  {
  }
  X& operator=(X const& rhs) // Zuweisungsoperator
  {
    X tmp(rhs);             // Kopie
    std::swap(p, tmp.p);    // Tausch Attribute
    return *this;
  }
  private:
    T* p;    // Zeiger auf dynamischen Speicher (Besitz)
}; 
 
int main()
{
  X a(1);       
  X b(a);    // Kopierkonstruktor in SmallTalk-Syntax 
  X c = a;   // Kopierkonstruktor in C-Syntax, keine Zuweisung!
 
  c = a;     // Zuweisungsoperator
}
kennen/beispiel/deepcopy.txt · Zuletzt geändert: 2020-07-27 10:41 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki