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