Allora è abbastanza semplice:
adj_elem(vertice* adj_vertex_ = 0, int dist_ = 0)
: adj_vertex(adj_vertex_)
, dist(dist_)
{
}
equivarrebbe a scrivere:
adj_elem(vertice* adj_vertex_ = 0, int dist_ = 0)
{
adj_vertex = adj_vertex_;
dist = dist_;
}
E' solamente un metodo "diverso" per inizializzare i membri di una classe ed è migliore da usare in quanto in presenza di eccezzioni ci sarebbe una deallocazione delle risorse "migliore".
Ti faccio un esempio pratico. Allora prima di tutto una premessa in c++ un oggetto si ritiene creato quando il suo costruttore termina con successo.
Prendiamo la classe teorica A:
ora ipotizziamo di aver definito il costruttore così:codice:template <typename T> class A { private: int size; T *member; T *member2; public: //costruttore //costruttore di copia //distruttore };
e così il distruttore:codice:A(int s) { size = s; member = new T[size]; member2 = new T[size]; }
se per qualche motivo l'allocazione di member 2 dovesse fallire, viene lanciata un eccezione di bad alloc e il costruttore non viene eseguito interamente, dunque l'oggetto non viene considerato costruito, il che implica che all'uscita dal blocco in cui l'oggetto stesso è stato definito esso non verrà distrutto, ma il suo membro member rimarrà allocato comportando uno spereco di memoria.codice:~A() { delete[] member; delete[] member2; }
Ora vediamo il caso in cui il costruttore sia definito così:
mentre il distruttore rimarrà uguale.codice:A(int s): size(s):member(new T[size]):member2(new T[size]) { }
Supponiamo come prima che l'allocazione di member2 fallisca, cosa succede? Il costruttore viene eseguito completamente in quanto l'eccezione non viene provocata dal costruttore, ma dal tentativo di inizializzare i membri. Questo comporta che all'uscita del blocco in cui è definito l'oggetto il distruttore viene chiamato e si dealloca la memoria usata da member, ottimizzando le risorse.
Spero di essere stato chiaro e di non avere detto castronerie, ormai i miei ricordi di metodologie di programmazione si affievoliscono

Rispondi quotando