Zerowanie konstruktora w liście.
Ostatnio zmodyfikowano 2015-04-15 20:33
Anim Temat założony przez niniejszego użytkownika |
Zerowanie konstruktora w liście. » 2015-04-15 20:03:46 Chciałbym spytać, po co trzeba zerować konstruktor na początku tworzenia listy jednokierunkowej ? powiedzmy mam przykład: struct element { int liczba; element * next; };
struct lista { element * first; void uzupelnij_liste( int liczba ); void wyswietl_liste(); };
oraz struct element { int liczba; element * next; element(); };
element::element() { next = 0; } struct lista { element * first; void uzupelnij_liste( int liczba ); void wyswietl_liste(); lista(); };
lista::lista() { first = 0; }
to w pierwszym przypadku (bez ustawienia i zdefiniowania konstruktora) w momencie posługiwania się tymi listami program czasami wariuje (niekoniecznie, ale zdarza się). W drugim przypadku jest bezbłędnie. I chciałbym spytać, dlaczego trzeba ustawić ten konstruktor. Zapewne nie do końca rozumiem pojęcie listy jednokierunkowej, ale nie ukrywam, że zazwyczaj trafi się tylko schematy posługiwania, niekoniecznie z wyjaśnieniem pewnych zagadnień. Prosiłbym dlatego o ewentualne wprowadzenie teoretyczne, jeśli to nie problem :) |
|
Quirinnos |
» 2015-04-15 20:27:05 Jest taka fajna anegdotka ilustrująca "dlaczego". Basia dostała dwa jabłka, zjadła jedno. Ile jabłek jej zostało? Odpowiedź - nie wiadomo. Ponieważ nie wiemy ile jabłek miała przed dostaniem tych dwóch. Zerujesz, aby przypadkiem nie przechowywało jakiś śmieci. Gwoli ścisłości, zmienna wskaźnikowa powinna być zerowana nullptr (c++11), nie zerem. PS. I nie zerujesz konstruktora, tylko zmienną. Konstruktor jest funkcją/metodą, która jest wywoływana w momencie tworzenia instancji danej klasy/struktury. |
|
Anim Temat założony przez niniejszego użytkownika |
» 2015-04-15 20:33:52 To jest piękna anegdotka :) Dziękuję za cierpliwe tłumaczenie moich różnych pytań :) |
|
« 1 » |