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
    

Anmelden zum Antworten