Class object dynamic Pointer
-
I have been working on the follwoing code.
A class named Vektor contains a dynamic pointer . I do not know if the constructor and destructor is called on automatically? if not when and how to call them. Can any explain about it please?//vector_Dyn.h // vector_Dyn.cpp #include<iostream> #include<cmath> #include<cstdlib> #ifndef _vector_Dyn_h__ #define _vector_Dyn_h__ class Vektor{ private: int itsLength; float *itsElement; public: Vektor(); /*standard-konstruktor */ Vektor(int n); /* Konstruktor zur Erzeugung eines n dimensional vectors*/ ~Vektor(); // Destkruktor void Read(); // liest über Tastatur elemente ein // und weist sie itsElents zu void Write(); // gibt untereinander die Elemente auf den Bildschrim aus. float Betrag(); // berechnet den Betrag des Vecktors und gibt in zurück. }; #endif using namespace std; int main (){ int length; Vektor *vektor = NULL; cout << "Vektor-Rechnung" << endl; int abbruch = 0; do { //Erzeugen cout << "Wieviele Elemente? -->"; cin >> length; cout << endl; vektor = new Vektor(length); //Verarbeiten cout << "Bitte die " << length << " Elemente eingeben." << endl; (*vektor).Read(); cout << "Es wurde eingelesen:" << endl; (*vektor).Write(); cout << "Und sein Betrag ist " << (*vektor).Betrag() << endl; //Freigeben delete vektor; vektor = NULL; cout << "Noch einen Durchlauf (1/0) -->"; cin >> abbruch; cout << endl; } while (abbruch != 1); return 0;} // Defining the vector class members: Vektor::Vektor(){ //standart konstruktor cout << "Standardkonstruktor aufgerufen "<<endl; itsLength=0; itsElement=NULL; } Vektor::Vektor(int n){ //Konstruktor zu Erzeugng einese n-dimensionalen vektors. cout << "Konstruktor mit vorgegebene Lange aufgerufen." <<endl; if(n>0){ itsLength=n; itsElement= new float[n]; } else{ cout << "Mit Lange "<<n<< " kann keine Vektor erzeugt werden. \n"; cout <<endl; exit(1); } } // Vektor Destruktor Vektor::~Vektor(){ itsLength=0; //eigentlich nicht notig aber damit er etwas zu tun bekommt delete[] itsElement; // das ist notwendig freigabe des Speichers itsElement=NULL; } void Vektor::Read(){ int i; cout <<endl; for (i=0; i<itsLength; i++){ cout << "vektor["<<i<<"]: -->"; cin>>*(itsElement+i); cout <<endl; } } void Vektor::Write(){ for (int i=0; i<itsLength; i++){ cout << "vektor ["<<i<<"]=\t "<< *(itsElement+i)<<endl; } } float Vektor::Betrag(){ float ergebnis=0.0; for(int i=0; i<itsLength;i++){ ergebnis=ergebnis+(*(itsElement+i)*(*(itsElement+i))); } return sqrt(ergebnis); }
-
int main() { Vektor v;//Konstruktor wird automatisch aufgerufen tuwas(); }//Hier wird die lokale Variable v gelöscht und der Destruktor automatisch aufgerufen