
Originariamente inviata da
shodan
Ancora meglio usando smart pointer (qui uso std::unique_ptr).
Ma quindi tendenzialmente, se ho dati membro di una classe dichiarati come puntatori, conviene definirli come smart pointer, così evito nel distruttore di dover richiamare il delete, corretto?
codice:
class Classe
{
public:
//costruttore, ecc;
//il distruttore è
~Classe(){delete(puntatore);/*altre eventuali cose*/};
private:
//quello che serve
tipoDelPuntatore* puntatore;
}
diventa
codice:
class Classe
{
public:
//costruttore, ecc;
//il distruttore è
~Classe(){/*altre eventuali cose, ma delete(puntatore) non dovrebbe servire più*/};
private:
//quello che serve
std::unique_ptr<tipoDelPuntatore> puntatore;
}
Ne approfitto per una ulteriore domanda: se il dato membro di tipo puntatore sarà usato solo "interno" alla classe, uso unique_ptr, se invece sarà impiegato anche da qualche altro oggetto, uso shared_ptr, corretto?
Grazie, grazie, grazie