Salve
Domanda magari un po' scema, ma non ne esco.
Da un po' mi sto cimentando nella programmazione c++ e spesso sbatto il muso su certi errori del compilatore che mi mandano al manicomio.
Riguarda il costruttore, il distruttore, const e &
Per dare l'idea di quello che voglio spiegare, mettiamo caso che abbia una classe chiamata "indirizzo"
Mia premura è gestire consapevolemte la memoria e capire bene quando si attiva il costruttore e quando si attiva il distruttore
Mettiamo che io abbia queste funzioni:
Oppure supponiamo che abbia una funzione nella quale creo un oggetto indirizzo che viene poi ritornato
In questi casi per esempio non saprei garantire che la memoria non si perda (o che sia stata deallocata per sbaglio o che sia stata allocata per sbaglio) e non saprei garantire che non vi siano errori da parte del compilatore.
Capite bene che non va bene ahahahahahah
Sapete illuminarmi riguardo il comportamento del costruttore e del distruttori (o anche di altre cose) in questi casi?
Domanda magari un po' scema, ma non ne esco.
Da un po' mi sto cimentando nella programmazione c++ e spesso sbatto il muso su certi errori del compilatore che mi mandano al manicomio.
Riguarda il costruttore, il distruttore, const e &
C++:
#include <cstdlib.h>
class indirizzo
{
private:
void* ptr;
size_t size;
public:
indirizzo(size_t s)
{
size = s;
ptr = malloc(s);
}
~indirizzo()
{
free(ptr);
}
}
Mia premura è gestire consapevolemte la memoria e capire bene quando si attiva il costruttore e quando si attiva il distruttore
Mettiamo che io abbia queste funzioni:
C++:
void func_1( indirizzo p )
{
/*...*/
}
void func_2( const indirizzo p )
{
/*...*/
}
void func_3( indirizzo & p )
{
/*...*/
}
void func_4( const indirizzo & p )
{
/*...*/
}
Oppure supponiamo che abbia una funzione nella quale creo un oggetto indirizzo che viene poi ritornato
C++:
indirizzo func()
{
/*...*/
}
class //...
{
/*...*/
indirizzo func() const
{
/*...*/
}
}
//nella classe indirizzo
class indirizzo
{
/*...*/
indirizzo& func()
{
return *this;
}
}
In questi casi per esempio non saprei garantire che la memoria non si perda (o che sia stata deallocata per sbaglio o che sia stata allocata per sbaglio) e non saprei garantire che non vi siano errori da parte del compilatore.
Capite bene che non va bene ahahahahahah
Sapete illuminarmi riguardo il comportamento del costruttore e del distruttori (o anche di altre cose) in questi casi?