[RISOLTO]costruttori-allocazione-dinamica-memoria C++

di il
4 risposte

[RISOLTO]costruttori-allocazione-dinamica-memoria C++

Salve a tutti ragazzi, ho una classe di questo tipo... ci sto sbattendo da un po di tempo, vorrei capire bene come posso implementare il costruttore di copia per la classe seguente... non riesco a capire bene come allocare la memoria dinamicamente per i costruttori,nello specifico come faccio a gestirla per string?, e sopratutto come gestirla per il tipo list..
Chi puo aiutarmi?
class Dipendente {
private:
      string       nome;
      string       cognome;
      string       matricola;      
      list<int>   redditi;
      
public:
      Dipendente();      
      Dipendente(const Dipendente &d);
      
      bool operator==(Dipendente &o);
      friend ostream& operator<<(ostream &os, Dipendente &d);
      friend istream& operator>>(istream &is, Dipendente &d);
        
      // Funzioni SET
      void setNome(string n);
      void setCognome(string c);
      void setMatricola(string m);
			
      // Funzioni GET
      string getNome();
      string getCognome();
      string getMatricola();
            
      // Altre Funzioni
      void addReddito(int r);  // aggiunge un nuovo reddito alla lista dei redditi
      void clear();            // azzera la lista dei redditi
      int  mediaReddito();   // calcola e restituisce la media dei redditi

};

4 Risposte

  • Re: [RISOLTO]costruttori-allocazione-dinamica-memoria C++

    Non c'è alcuna memoria da allocare: semplicemente copi i valori.
    
    Dipendente::Dipendente(const Dipendente& d) {
          nome = d.nome;
          cognome = d.cognome;
          matricola = d.matricola;
          redditi = d.redditi;
    }
    
    L'unico dubbio che puoi avere è sulla copia di una list, ma se vai a vedere la documentazioni trovi questo che ti spiega come si comporta l'operatore = nel caso di due liste. Ed è esattamente quello che vuoi.
  • Re: [RISOLTO]costruttori-allocazione-dinamica-memoria C++

    Grazie mille, quindi per il costruttore di copia non c è bisogno di allocare memoria?? E per quanto riguarda il cistruttore di default?? Come mi comporto ? Provero a creare un costruttore di assegnazione per le liste ...
  • Re: [RISOLTO]costruttori-allocazione-dinamica-memoria C++

    Jqr91 ha scritto:


    quindi per il costruttore di copia non c è bisogno di allocare memoria?? E per quanto riguarda il cistruttore di default??
    No, la questione è diversa. Il fatto del costruttore di default o del costruttore di copia non c'entra nulla: devi allocare memoria quando è necessario. In questo caso non lo era, perché copiavi tra oggetti, ecc. Se anziché il tipo string tu avessi utilizzato dei char* (puntatori a char, che si possono vedere come array dinamici di char) allora sì che avresti dovuto allocare memoria con una new (e poi deallocarla con una delete nel distruttore dell'oggetto).

    Per quanto riguarda l'assegnazione tra liste, prima ti ho linkato la documentazione proprio per mostrarti che non devi fare niente. E' sufficiente scrivere
    
    nuova_lista = vecchia_lista;
    
    e l'operatore = fa tutto il lavoro per te.
  • Re: [RISOLTO]costruttori-allocazione-dinamica-memoria C++

    Ciao, grazie mille ora mi è tutto piu chiaro.. molto gentile
Devi accedere o registrarti per scrivere nel forum
4 risposte