Advertisement
algore87

Kopierkonst / Zuweisungsoperatorbsp

Jan 31st, 2013
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1. //////////////////////////////////////////// Vektor.h ///////////////////////////////////////////////
  2. #ifndef VEKTOR_H
  3. #define VEKTOR_H
  4.  
  5. #include <iostream>
  6. using namespace std;
  7.  
  8. // -------------------------- Klassendeklaration (Vektor) --------------------------//
  9. class Vektor {
  10. public:              // Schnittstelle
  11.    Vektor(int = 0);                          // Konstruktor
  12.    Vektor(Vektor& arg);                      // Kopierkonstruktor
  13.    virtual ~Vektor();                        // Destruktor (virtuell)
  14.  
  15.    // Gebe Größe zurück
  16.    int size() const           {return sz;}
  17.  
  18.    // Hole,Setze Werte aus Elemente
  19.    int get(int n)             {return elem[n];}
  20.    int set(int n, int val)    {elem[n] = val;}
  21.  
  22.    // Operatoren
  23.    Vektor& operator=(Vektor& a);           // Zuweisungsoperator
  24.  
  25. private:             // Implementierung
  26.    int sz;                                   // Größe des Vektor
  27.    int* elem;                                // Zeiger auf Int Elemente
  28.  
  29.    void copy(const Vektor& arg);             // Funktion zum Kopieren
  30. };
  31.  
  32.  
  33. #endif
  34.  
  35.  
  36. /////////////////////////////////////////////// Vektor.cpp /////////////////////////////////////////////
  37. #include "Vektor.h"
  38.  
  39. //------------------- Memberfunktionen (Klasse Vektor) ---------------------//
  40. // ---------------- Konstruktoren --------------------//
  41. // Konstruktor (Standart & Überladen)
  42. Vektor::Vektor(int n)
  43.    :sz(n), elem(new int[n])
  44. {
  45. }
  46.  
  47. // Kopierkonstruktor
  48. Vektor::Vektor(Vektor& arg)
  49.    : sz(arg.sz), elem(new int[arg.sz])
  50. {
  51.    copy(arg);
  52. }
  53.  
  54. // Destruktor
  55. Vektor::~Vektor()
  56. {
  57.    if (sz > 0)
  58.       delete[] elem;
  59.    else
  60.       delete elem;
  61. }
  62.  
  63. // ------------------ Operatoren ---------------------//
  64. // Zuweisungsoperator
  65. Vektor& Vektor::operator=(Vektor& a)
  66.    // macht diesen Vektor zu einer Kopie von a
  67. {
  68.    // 1) erzeugt Kopie der Elemente aus Originalvektor
  69.    int* p = new int[a.sz];
  70.    for (int i = 0; i < a.sz; i++)
  71.       p[i] = a.elem[i];
  72.  
  73.    // 2) Speicherfreigabe der alten Elemente des Zielvektors
  74.    delete[] elem;
  75.  
  76.    // 3) elem -> p
  77.    elem = p;
  78.    sz = a.sz;
  79.  
  80.    // 4) Referenz auf sich selbst zurückliefern
  81.    return *this;
  82. }
  83.  
  84. // ------------------ spez. Funktion -----------//
  85. // copy
  86. void Vektor::copy(const Vektor& arg)
  87. {
  88.    // kopiert die Elemente [0:arg.sz-1]
  89.    for (int i = 0; i < arg.sz; i++)
  90.       elem[i] = arg.elem[i];
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement