Konstruktor a ničitel

Anonim

Třída je v samém jádru objektově orientovaného programování (OOP). Je to plán pro vytváření objektů, které poskytují počáteční hodnoty pro členské proměnné a členské funkce. Je to základní stavební blok OOP, který definuje povahu budoucího objektu. Nejdůležitější věcí o třídě spočívá v tom, že definuje nový datový typ a jakmile je definován, lze jej použít k vytvoření objektů tohoto typu. Takže by stačilo říct, že třída je šablona objektu a objekt ve skutečnosti představuje instanci třídy. Používá se k vytváření a správě nových objektů a podpora dědictví, což je jeden z hlavních konceptů objektově orientovaných programovacích jazyků, jako je Java. Stručně řečeno, třída organizuje informace o datovém typu tak, aby znovu použila prvky při vytváření více instancí daného datového typu. Data nebo proměnné definované v rámci třídy se nazývají proměnné instance.

Co je konstruktér?

Konstruktor je speciální členskou funkcí třídy, která se nazývá při vytvoření instance objektu. Vždy může být obtížné inicializovat všechny proměnné ve třídě při každém vytvoření instance. Protože je požadavek na inicializaci běžný v objektově orientovaném programování, umožňuje objektům inicializovat automaticky při vytváření. Tento proces automatické inicializace se provádí pomocí konstruktoru. Důvod, proč se jmenuje speciální, je proto, že metoda instance má obvykle stejný název jako třída. Inicializuje objekt okamžitě po vytvoření a může být použit k nastavení hodnot členů objektu. Konstruktor je syntakticky podobný metodě v objektově orientovaném programování a metoda je postup spojený s třídou a zahrnutý do jakéhokoli objektu této třídy. Stručně řečeno, konstruktér je volán pokaždé, když je vytvořen objekt třídy. Nejdůležitější věcí konstruktérů je to, že nemají návratový typ, ani neplatné.

Co je ničitel?

Deštruktor je úplně jiný koncept; to je speciální metoda, která se nazývá, když je z paměti vymazána instance třídy. Dekresor se automaticky volá, když objekt již není zapotřebí, nebo se chystá zmizet nebo je explicitně uvolněn. Hlavním účelem destruktoru je zbavit se prostředků, které objekt využíval během svého životního cyklu. Dává objektu poslední možnost uvolnit libovolnou paměť, kterou přidělila, takže bude dostatek místa na hromadě pro uložení nových objektů, aby programy fungovaly efektivně. Destruktory jsou často používány ve spojení s konstruktéry, s výjimkou, že se zničí objekty, které byly vytvořeny pomocí konstruktorů. Cílem je deinicializovat objekty po jejich odstranění, aby se uvolnila paměť pro nové objekty. Stejně jako konstruktéři jsou destruktory definovány jako podprogramy v definici třídy a mají stejný název jako název třídy, s výjimkou, že destruktor je předponován ~ (tilde). Destruktory jsou v jazyce C explicitně nazývány, avšak v jazyce Java nejsou žádné destruktory.

Rozdíl mezi konstruktérem a ničitelem

Účel konstruktora a ničitele

Obě konstruktory a destruktory jsou speciálními členy funkcí každé třídy, ale s různými pojmy. Konstruktor se používá k inicializaci instance třídy, což znamená, že je vyvoláván vždy, když je třída instantizována, zatímco destruktor je opakem konstruktoru, který je volán v opačném pořadí konstruktorů.

Přidělení paměti

Konstruktor je volán pokaždé, když je vytvořena nová instance třídy. Je to v podstatě členská funkce třídy, která inicializuje objekt okamžitě po vytvoření a přiděluje mu paměť. Na druhou stranu destruktor je nazýván, když je z paměti vymazána instance třídy, která zase deinicializuje objekty, které byly vytvořeny pomocí konstruktorů pro uvolnění paměti pro nové objekty.

název

Obě konstruktory a destruktory jsou speciální členy funkcí třídy se stejným názvem jako název třídy, s výjimkou, že destruktor je předponován operátorem ~ (tilde). Konstruktér není nic jiného než metoda, která nemá návratový typ, ani neplatný, zatímco destruktory jsou přesně opačný konstruktérů.

Přetížení

Jak konstruktéři, tak destruktory jsou automaticky po vytvoření a smazání automaticky zavoláni. Na rozdíl od konstruktorů však destruktory nemohou být přetíženy. Přetížení je objektově orientovaná koncepce programování, která umožňuje definovat dvě nebo více funkcí se stejným názvem, takže je můžete volat různými seznamy argumentů.

Argumenty

V objektově orientovaném programování konstruktéři často akceptují argumenty, které používají k nastavení požadovaných proměnných členů, zatímco destruktory nepřijímají žádné argumenty.

Práce konstruktora a ničitele

Konstruktory umožňují objektu inicializovat některou z jeho hodnot předtím, než jsou použity, zatímco destruktory umožňují objektu provádět část kódu v okamžiku jejího zničení.

Distruktor konstruktorů verzí: srovnávací graf

Shrnutí konstruktoru Vs. Destruktor

Obě konstruktory a destruktory jsou speciální členy funkcí třídy se stejným názvem jako název třídy, s výjimkou destruktorů předchází operátor ~ tilde.Konstruktor není nic jiného než metoda, kromě toho, jak se nazývá, když je vytvořena instance objektu, zatímco destruktor je přesně opačný konstruktérů, které se nazývají při vymazání instance objektu z paměti. Účelem destruktorů je deinicializovat objekty, které byly vytvořeny pomocí konstruktorů, aby se uvolnil prostor pro uložení nových objektů.