/* * Programmieren fuer Physiker, SS 2010 * * Vektorklasse: dynamisch anlegen, Index-Bereich ueberpruefen. * Destruktor. Copy Constructor. Assignment. */ #include using namespace std ; // ---- CLASS VEC class Vec { private: int size ; // Groese double* p ; // Zeiger auf den Vektor public: Vec(int) ; // Konstruktor ~Vec() ; // Destruktor Vec(const Vec& v) ; // "copy constructor" Vec& operator= (const Vec& v) ; // Zuweisung double & operator[] (int) ; // Elementzugriff // alternativ auch "operator()" moeglich // hier sollten nun noch viele Rechenoperationen // fuer Vektoren definiert sein... } ; Vec::Vec(int s) // Konstruktor { size = s ; // nimm die Groesse auf p = new double[s] ; // besorge Speicher fuer die Vektorkomponenten } Vec::~Vec() // Destruktor { delete[] p ; // Speicher freigeben } Vec::Vec(const Vec& v) // copy constructor // wird bei "Call-by-Value" und Funktionsrueckgaben aufgerufen { size = v.size ; p = new double[v.size] ; for (int i=0; i=size) { cout << "Illegaler Vektorzugriff. Stop." << endl ; exit(1) ; } return p[i] ; } // ---- MAIN int main() { int k=17 ; Vec v(k) ; // v[18]=4.4 ; // gibt Fehler, weil ausserhalb Bereichs for(int i=0; i