Konstruktory třídy C ++

C Class Constructors



Konstruktory jsou jako funkce. Ty se používají k inicializaci hodnot a objektů třídy. Tyto konstruktory jsou inicializovány při vytvoření objektu třídy. Constructor přímo nevrací žádnou hodnotu. Abychom získali hodnotu konstruktoru, musíme popsat samostatnou funkci, protože konstruktor nemá žádný návratový typ. Constructor se liší od jednoduché funkce různými způsoby. Při generování objektu se vytvoří konstruktor. Je definován ve veřejném segmentu třídy.

V tomto článku se budeme zabývat všemi těmito typy konstruktorů pomocí příkladů.







Příklad 1

Toto je ilustrace výchozího konstruktoru. Jak víme, že konstruktory jsou ve výchozím nastavení vytvořeny automaticky, když vytvoříme objekt třídy. Tomu se říká implicitní tvorba. Konstruktory mají stejný název, jaký je název třídy. Zvažte soubor s kódem c ++ konstruktoru, protože víme, že třída má dvě možnosti, soukromé a veřejné. Soukromá část obsahuje datové proměnné, zatímco veřejná část je pro funkce načtené jakýmkoli objektem. Konstruktor je tedy také definován ve veřejné části.



Celé číslo()

{

X=padesátka;

a=dvacet;

};

V tomto konstruktoru jsou proměnným přiřazeny hodnoty. Chceme -li hodnoty načíst jako výstup, musíme je vytisknout v hlavním programu.







Po definování konstruktoru je třída uzavřena. Při vstupu do hlavního programu provedeme tisk hodnot pomocí objektu. Objekt vždy přistupuje ke konstruktorům, protože se jedná o části třídy. Vytváření objektů je tak jednoduché. To se provádí zavedením názvu třídy. V tomto příkladu je to celé číslo. Hodnota bude načtena metodou tečky. tj. a.x.

Můžeme vidět výstup zdrojového kódu z terminálu v Ubuntu. Přístup použitý pro získání výstupu je celkem snadný. Nejprve je kód zkompilován a poté spuštěn. Pro proces kompilace používáme kompilátor G ++. Stejně jako v případě C používáme GCC.



$ G++ -nebo filec filec.C

./soubor c

-O slouží k uložení výstupu do souboru.

Příklad 2

Na tomto obrázku vysvětlíme parametrizované konstruktory. Na rozdíl od předchozího příkladu můžeme argumenty předat také konstruktorům z hlavního programu. Při generování objektu jsou tyto hodnoty automaticky předány proměnným přítomným v konstruktoru, aby byla hodnota přijata. Některá použití parametrizovaných konstruktorů jsou.

  • Používá se k inicializaci různých proměnných s různými hodnotami uvnitř konstruktorů při jeho inicializaci.
  • Používá se při přetížení konstruktoru. Je definován dále v článku.

Podívejme se nyní na ilustraci, kterou jsme popsali, abychom tento koncept rozvinuli. Třída má název celé číslo, takže jméno konstruktéra bude určitě také stejné. V parametrech konstruktoru existují dvě celočíselné hodnoty typu. Ty se inicializují, aby přijaly hodnoty odeslané z hlavního programu jako volání funkce.

Celé číslo( intX,inta)

{

NA=X;

B=a;

};

V předchozím příkladu byly proměnným uvnitř konstruktoru dány hodnoty. Zatímco v tomto konstruktoru jsou proměnné přiřazeny s proměnnými, které mají hodnotu.

Chceme -li převzít zobrazení, musíme definovat funkci, která vrátí hodnotu, protože k této inicializované proměnné není možné přistupovat přímo z konstruktoru.

intgetX()

{

vrátit sena;

};

Nyní uvidíme hlavní část programu. Zde, když je objekt vytvořen, můžete vidět hodnoty v sekci parametrů.

Celé číslo v(70,55); {implicitní}

celé číslo v=celé číslo(10,patnáct); {explicitní}

A abychom výsledek zobrazili, zavoláme funkce vytvořené uvnitř třídy pomocí objektu. tj. v.getx ().

Způsob načítání záznamů je stejný, jak byl představen dříve.

Příklad 3

Tento příklad se zabývá kopírováním konstruktoru třídy. Zkopírovaný konstruktor se používá k inicializaci objektu jiným objektem podobné třídy, do kterého patří. Tento konstruktor kopíruje data přítomná v jednom objektu do druhého. Parametry tohoto konstruktoru obsahují adresu objektu třídy. Zvažte uvedené příklady, ve kterých jsme zavedli dvě proměnné stejných datových typů, aby k nim měl přístup jakákoli funkce uvnitř třídy. Konstruktor obdrží hodnoty prostřednictvím proměnné. Zkopírovaný konstruktor zároveň obdrží pouze objekt. A pomocí tohoto objektu budou hodnoty načteny.

stěna(stěna&obj)

{

Délka=obj.délka;

Výška=obj.výška;

}

Musíme vypočítat plochu, takže zde je definována funkce pro tento výpočet. Při volání vrátí hodnotu do hlavní funkce. Nyní budeme sledovat hlavní program kódu

Volání funkce zkopírovaného konstruktoru bude vypadat takto.

Nástěnná zeď 2=zeď 1;

Objekt volá zkopírovaný konstruktor a data z prvního objektu se zkopírují přes něj. Dále zavoláme funkci pro výpočet plochy přes oba objekty.

Z výstupu můžete vidět, že výsledek z obou konstruktorů je stejný. To znamená, že objekt úspěšně zkopíroval celá data.

Příklad 4

Toto je ukázka přetížení konstruktoru. Stává se to, když musíme uvnitř třídy použít více než jednu funkci. Přetížení konstruktoru se řídí pokyny parametrizovaných konstruktorů. Všechny konstruktory ve třídě mají podobný název jako třída. Ale každému z konstruktorů jsou přiřazeny jiné parametry. Každý konstruktor je volán podle argumentu, když vytváříme objekt.

Zvažte uvedený příklad, ve kterém jsme použili tři konstruktory. Jeden je bez jakéhokoli argumentu. Druhý je s jediným argumentem, zatímco třetí je se dvěma argumenty. Tento obrázek je podobný předchozímu. Když vypočítáme plochu v samostatné funkci popsané uvnitř třídy.

// Konstruktor se dvěma argumenty

tvar(intX,inta)

{

na=X;

b=a;

};

Nyní, když se přesuneme k hlavnímu programu, můžeme vidět, že když inicializujeme objekt třídy, je ve výchozím nastavení volán konstruktor bez argumentu. Nyní musíme zavolat další konstruktory s různými objekty s různými argumenty.

Tvary;

Tvar s2(8);

Tvar s3(4,2);

Funkce, pomocí které můžeme zobrazit hodnotu, se nazývá prostřednictvím stejného vytvořeného objektu.

K zobrazení výstupu použijeme stejnou metodu příkazového terminálu kompilací a spuštěním kódu přítomného v souboru.

Z výstupu můžeme vidět, že odpověď je pro každý konstruktor stejná.

Závěr

V tomto kurzu jsme viděli základy konstruktorů a jejich funkcí, včetně toho, jak je přetížit. K inicializaci proměnných s hodnotami se používají konstruktory.