Dyskusja:C++/Konstruktor i destruktor

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania

Przykładowe kody których użyłem nie zostały sprawdzone - wymyśliłem je z głowy. Nie daję więc głowy, że się gdzieś nie pomyliłem. --Uniq

W chwili wolnej postaram się je sprawdzić. --Piotr K. 18:29, 26 gru 2005 (UTC)

no wiec mi sie wydaje ze tam jest maly blad w klasie "rok" w poradzie przy konstruktorach kopiujacych- powinien byc chyba "miesiac" zamiast "numer"

Też mnie się tak zdaje. Poprawiłem, dzięki. --Derbeth talk 00:16, 5 sty 2007 (CET)

Vector::Vector(double,double) podwojna deklaracja

Konstruktor nie musi być public. Np singleton ma konstruktor w sekcji private. w ten sposób możemy kontrolować ilość instancji danej klasy. Jest to bardzo istotne w programowaniu embeded,pewnie nie tylko, kiedy dana klasa opisuje urzadzenie.

"Najczęstszą funkcją konstruktora jest inicjalizacja obiektu, oraz alokacja pamięci (np. poprzez stworzenie potrzebnych obiektów)." - troszeczkę niefortunne sformułowanie, w pierwszym czytaniu odniosłem wrażenie, że konstruktor alokuje pamięć dla konstruowanego obiektu przejmując funkcje operatora new. --Hornet (dyskusja) 17:05, 8 kwi 2011 (CEST)

"Destruktor jest natomiast funkcją, którą wykonuje się w celu zwolnienia pamięci; następuje niszczenie obiektu danej klasy." - destruktor służy do posprzątania po obiekcie, zwolnienia zasobów, wypięcia z łańcuchów etc. Pamięć obiektu jest zwalniana operatorem delete - oczywiście gdy taki zostanie wywołany. Najczęściej destruktor wywoływany jest niejawnie właśnie przez delete, choć oczywiście można niejako ręcznie wywołać czysty destruktor przez ~NazwaKlasy() lecz wówczas pamięć po obiekcie wcale nie zostanie zwolniona. --Hornet (dyskusja) 17:18, 8 kwi 2011 (CEST)

  • poprawiłem, chodziło o pamięć dla dynamicznych zmiennych wewnątrzklasowych które często są w konstruktorze tworzone przy pomocy "new" i w destruktorze usuwane --Lethern (dyskusja) 21:34, 8 kwi 2011 (CEST)