Doporučená, 2021

Redakce Choice

Rozdíl mezi strukturou a třídou

Jak struktura, tak třída poskytuje způsob, jak vytvořit přizpůsobený typ dat, který lze dále použít k vytvoření instancí. C ++ rozšiřuje roli struktury tak, aby vytvořila třídu. Jak struktura, tak třída, jsou ve všech ohledech podobné, s výjimkou jednoho rozdílu, který má struktura ve výchozím nastavení všechny své členy jako „veřejné“ a třída ve výchozím nastavení má všechny své členy „soukromé“. Studujme rozdíl mezi strukturou a třídou pomocí srovnávací tabulky.

Srovnávací graf

Základ pro porovnáníStrukturaTřída
ZákladníPokud není specifikován přístupový specifikátor, jsou ve výchozím nastavení všichni členové 'public'.Pokud není specifikován přístupový specifikátor, jsou ve výchozím nastavení všichni členové 'privátní'.
Prohlášenístruct structure_name {
typ struct_element 1;
typ struct_element 2;
typ struct_element 3;
.
.
.
};
třída class_name {
datový člen;
členská funkce;
};
InstanceInstance „struktury“ se nazývá „strukturní proměnná“.Instance „třídy“ se nazývá „objekt“.

Definice struktury

Struktura je soubor proměnných odlišných datových typů, které jsou všechny označeny jedním názvem. Deklarace struktury tvoří šablonu, která se používá k vytvoření instance struktury. Struktura je deklarována následovně.

 struct sname {typ struct_element1; typ struct_element2; typ struct_element3; . . . } variable1, variable2, . . ; 

Klíčové slovo 'struct' definuje kompilátoru, že je deklarována struktura. 'Sname' představuje jméno dané struktuře. Deklarace struktury je vždy ukončena středníkem, protože je považována za příkaz. Instance této struktury můžete deklarovat před jejím ukončením, jak je uvedeno výše v kódu (variable1, variable2) nebo můžete deklarovat instanci struktury v main (), a to zapsáním názvu instance, kterému předchází název struktury.

 // příklad. main () {sname S1, S2; } 

Zde jsou S1 a S2 příklady struktury. Instance struktury se nazývají „proměnná struktury“. Prvek deklarovaný uvnitř tělesa struktury je přístupný přes proměnné struktury pomocí operátoru tečky.

 // příklad S1. struct_element1; 
  • Pole struktury může být také vytvořeno, pro to musíte nejprve deklarovat strukturu a pak deklarovat pole tohoto typu.
 // sample struct sname sarray [10]; 

Příkaz Above vytvoří pole s názvem 'sarray' obsahující deset proměnných a každá proměnná je uspořádána tak, jak je definováno v 'sname'.

  • Členu struktury můžete předat funkci a funkci můžete předat celou strukturu.
  • Stejně jako celočíselný ukazatel, ukazatel pole, ukazatel struktury může být také deklarován umístěním znaku '*' na začátek názvu proměnné struktury.
 // sample struct sname * S1; 

Poznámka:

Prvky „struktury“ jsou uloženy v souvislém paměťovém místě.

Definice třídy

Třída v OOP definuje nový typ, který obsahuje datové členy a členské funkce, které se používají pro přístup k datovým členům třídy. Instance tříd se nazývají „objekty“, z nichž každá má stejnou organizaci jako třída. Třída je logická abstrakce, zatímco objekt má fyzickou existenci. Třída je syntakticky podobná struktuře. Třída může být deklarována následovně.

 třída class_name {soukromé datové členy a členské funkce. access_specifier type data_member; typ mem_funct (seznam parametrů) {. . }} seznam objektů; 

Třída je zde klíčové slovo, které kompilátoru deklaruje, že byla deklarována třída. Hlavním rysem OOP je skrývání dat, které je dosaženo poskytnutím tří specifikátorů přístupu, které jsou „veřejné“, „soukromé“, „chráněné“. Pokud nezadáte žádný specifikátor přístupu ve třídě při deklaraci datových členů nebo členských funkcí, jsou ve výchozím nastavení všechny považovány za soukromé. Specifikátor veřejného přístupu umožňuje přístup k funkcím nebo datům v jiných částech programu. Soukromým členům třídy je přístup pouze člen této třídy. Specifikátor chráněného přístupu je aplikován během dědičnosti. Jakmile deklarujete specifikátor přístupu, nemůže být změněn v celém programu.

Objekty nejsou ničím jiným než instancí tříd. K členům třídy přistupuje objekt stejné třídy pomocí operátoru tečka (.).

 //object.mem_funct (argumenty); 
  • Objekt může být také předán jako argument funkce.
  • Lze také vytvořit ukazatel na objekt.

Klíčové rozdíly mezi strukturou a třídou

  1. Hlavní rozdíl mezi strukturami a třídami je, že ve výchozím nastavení jsou všichni členové struktury veřejní, zatímco ve výchozím nastavení jsou všichni členové třídy privátní.

Podobnosti:

  • V C ++ jsou struktura i třída syntakticky ekvivalentní.
  • Struktura i třída mohou prohlásit některé své členy za soukromé.
  • Název struktury nebo třídy lze použít jako samostatný typ.
  • Struktura i třída podporují mechanismus dědičnosti.

Závěr:

Struktura v C měla některá omezení, protože struktura neumožňuje skrývat data, datatype 'struct' nelze zpracovávat jako vestavěné typy, struktury nepodporují dědičnost. Struktura v C ++ překonala tato omezení. V jazyce C ++ jsou třídy rozšířenou verzí struktury. Programátor zjistí, že je snadné použít třídu k uchovávání dat a funkci a strukturu pouze pro uchovávání dat.

Top