Pirms saprotam atšķirību starp klasi un striktu, mums jāzina daži pamatjēdzieni, kas ar tiem saistīti. Bez izpratnes par jēdzieniem ir grūti saprast atšķirības starp abām.
Šie ir divi svarīgi jēdzieni, kas saistīti ar objektu orientētu programmēšanu, un tie veido pamatu funkciju un datu pārnešanai uz citām funkcijām. Lai labāk saprastu, mēs to varam saistīt ar reālās dzīves piemēru. Klasi var uzskatīt par veikalu, un objekts var būt jebkurš atsevišķs, īpašs veikals, piemēram, pārtikas preces, kancelejas preces, augļi utt. Visiem objektiem ir galvenās klases - veikala - kopīgās īpašības, un tie savukārt objektiem var būt savas ekskluzīvās īpašības, piemēram, īpašs dizains, apgaismojums utt. Izmantojot objektus, mēs faktiski varam izmantot klasi; tie veido klases gadījumus.
Klases sintakse
Klases veikals
publiskās stīgu lietas;
publisku stīgu dizains;
Objekta sintakse
Veikalu pārtikas preces = jauns veikals ();
Kancelejas preču veikals = jauns veikals ();
Struct satur tikai datus, un tāpēc tas ir noderīgs, lai noformētu individuālās datu prasības caur Struct objektiem. Atšķirībā no klases, tai trūkst funkciju. Šeit ir tā sintakse:
struct grocery_entrance
char ieejas nosaukums [50];
int ieejas_izmērs;
grocery_entrance;
Visos veikalos var izmantot Struct “ieeju” ar individuāliem nosaukumiem un izmēriem.
Tas ir līdzīgi tam, kā dēls manto sava tēva mantu, un, savukārt, dēls var pievienot arī citus savus īpašumus. Klase var būt gan pamatklase, gan atvasināta klase, kurā pirmo var izmantot kā bāzi, lai izveidotu otro. Atvasinātā klase sev pievieno dažas citas īpašības, izņemot tās, kuras tā iegūst no bāzes klases. Apsverot iepriekš minēto piemēru, pārtikas preču veikalu joprojām var novirzīt uz noteiktu pārtikas preču veikalu, piemēram, XYZ pārtikas preču veikalu.
Tagad, kad esam iepazinušies ar pamatjēdzieniem, mēs varam iedziļināties faktiskajā atšķirībā starp klasi un striktu.
Demo obj = jauns Demo ();
Tas nozīmē, ka, veidojot klases objektus, mums jāizmanto atslēgvārds “new”. Veidojot Structs objektus, tas nav nepieciešams. Apskatiet viņu sintakse:
Demo obj;
Tas darbojas perfekti pat bez atslēgvārda “jauns”.
Tā kā klases elastīgāk izmanto datus un funkcijas kopā, mēs varam to meklēt, kad izmantotie objekti ir sarežģīti un lieli. Mūsu piemērā tirdzniecības centrs var izmantot klasi “veikals”, lai sistēmu labāk izteiktu. Struktūras tomēr ir ierobežotas ar mazākiem objektiem, jo tās ir salīdzinoši mazāk efektīvas nekā klases. Tāpēc, ja projektējat savu veikalu, labāka izvēle ir strūklakas.
Iespējams, ka esat dzirdējuši vārdus “bokss” un “bokss”, lai pārvērstu Struktu par klasi, un otrādi. Lai gan šie ir efektīvi procesi, kas palīdz mums veikt pārveidi, ar tiem jārīkojas piesardzīgi. Tā kā tas tieši ietekmē atmiņas vietas, tam ir milzīga ietekme uz mūsu sistēmas veiktspēju. Turklāt tas ietekmē atkritumu savākšanas procesus un rada vispārēju sistēmas neefektivitāti. Tāpēc izmantojiet šos reklāmguvumus tikai pēc nepieciešamības.
Apskatīsim iepriekš minētās atšķirības tabulas formā.
S.Nē | Koncepcijas | Atšķirības | |
Klase | Struktūra | ||
1 | Atkārtota izmantojamība | Pilnībā atkārtoti izmantojams | Nav atkārtoti izmantojams |
2 | Redzamība | Visas klases funkcijas ir redzamas tās objektiem | Strukta objekta dati nav redzami citiem tās pašas Struct objektiem |
3 | Braukt garām atsaucei un paiet garām vērtībai | Izmanto garāmgājienu | Izmanto garāmgājienu |
4 | Mantojums | Klases funkcijas var mantot ar tās apakšklasēm; pieļauj mantojumu | Nekad nepieļauj mantojumu |
5 | Noklusējuma redzamība | Pēc noklusējuma visi klases dalībnieki ir privāti | Pēc noklusējuma visi Struct dalībnieki ir publiski |
6 | Izmērs, kad tukšs | Tukšas klases lielums ir 1 baits | Tukša strūklaka lielums ir 0 baiti |
7 | Atkritumu kolekcija | Tā kā tajā tiek izmantota atsauce, atkritumu savākšana ir iespējama | Tā kā atkritumu savākšana notiek garām, atkritumu savākšana nav iespējama |
8 | Atmiņas pārvaldība | Atkritumu savākšanas procesa vienkāršība palīdz efektīvā atmiņas pārvaldībā | Atkritumu savākšanas trūkums rada sliktu atmiņas pārvaldību |
9 | Konstruktori | Ļauj visu veidu konstruktoriem, piemēram, ar parametriem vai bez tiem | Atļauj tikai parametrētus konstruktorus |
10 | Iznīcinātāji | Var izmantot | Nevar to izmantot |
11 | Locekļa mainīgo iniciēšana | Ļauj tieši iniciēt dalībnieku mainīgos | Neļauj tieši vārdu inicializēt dalībnieku mainīgos |
12 | Objekta izveidošana | Objekta izveidē obligāti jāizmanto atslēgvārds “jauns” | Objekta izveidē nav obligāti jāizmanto atslēgvārds “jauns” |
13 | Kad lietot? | Labāk lielākiem un sarežģītākiem objektiem, kur nepieciešama mantošana | Labāk maziem un vienkāršākiem objektiem, kur mantojumam ir mazāka nozīme. |
Mēs esam gandrīz aptvēruši visas atšķirības starp Class un Struct, un, ja jums liekas, ka kaut kā trūkst, lūdzu, dariet mums to zināmu. Mācīsimies kopā un maksimāli izmantosim šīs zināšanas!