Különbség az osztály és a sztrájk között

Mielőtt megértenénk a különbséget az osztály és a sztrájk között, meg kell ismernünk néhány alapvető fogalmat, amelyek velük társulnak. A fogalmak megértése nélkül nehéz megérteni a kettő közötti különbségeket.

Mi az osztály és az objektum:

Ez az objektum-orientált programozáshoz kapcsolódó két fontos fogalom, és ezek képezik az alapot a funkciók és az adatok más funkciókhoz továbbításának kereteihez. A jobb megértés érdekében összekapcsolhatjuk azt egy valós példával. Az osztály áruháznak tekinthető, és az objektum bármilyen egyedi, meghatározott áruház lehet, például élelmiszerboltok, irodaszerek, gyümölcsök stb. Az összes tárgy megosztja a fő osztály - a bolt - közös tulajdonságait, és viszont a tárgyaknak megvannak a saját kizárólagos tulajdonságai, például egy speciális kialakításuk, világításuk stb. A tárgyakon keresztül ténylegesen felhasználhatjuk az osztályt; egy osztály példányait képezik.

Egy osztály szintaxisa

Osztálybolt

nyilvános húrok;

nyilvános húr tervezés;

Objektum szintaxisa

Áruház élelmiszer = új Áruház ();

Levélpapír = új áruház ();

Mi egy sztrájk?

A Struct csak az adatokat tartalmazza, ezért hasznos az egyedi adatkövetelmények kialakításában a Struct objektumokon keresztül. Az osztálytól eltérően, nincs funkciója. Itt van a szintaxisa:

struct grocery_entrance

char bejáratnév [50];

int bejárat_mérete;

élelmiszerbolt;

Minden üzlet használhatja a Struct „bejáratát” egyedi nevekkel és méretekkel.

Mi az örökség??

Hasonló ahhoz, ahogy egy fiú örököli apja vagyonát, és viszont a fiú hozzátehet néhány más saját vagyonát is. Az osztály lehet alap osztály vagy származtatott osztály, amelyben az előbbi alapként tekinthető az utóbbi kialakításához. A származtatott osztály néhány további tulajdonságot hozzáad magának, kivéve az alap osztálytól. A fenti példa figyelembe vételével az élelmiszerbolt még mindig származhat egy meghatározott élelmiszerboltból, például az XYZ élelmiszerboltból.

Most, hogy megismertük az alapfogalmakat, belemerülhetünk a tényleges különbségbe a Class és a Struct között.

Hogy különböznek egymástól??

  • Újrahasználhatóság: Mivel az osztályok képezik az alapkeretet, újra felhasználhatók; A sztrukták azonban egyedi elemek, amelyeknek vannak specifikus tulajdonságai, tehát nem használhatók újra. Például az élelmiszerbolt osztály bármilyen típusú élelmiszerbolthoz használható, de a Struct élelmiszerbolt_tétel csak erre vonatkozik, és nincs értelme más osztályokban újra felhasználni..
  • Láthatóság: Az osztály összes funkciója nyilvánosan elérhető az objektumok számára. Például van egy „dolgok” nevû funkció a „bolt” osztály alatt. A „dolgok” funkció az összes objektumánál látható, mint például az „élelmiszerbolt”, „papíráru” stb. Az ilyen láthatóság a Structs esetében nem lehetséges, mivel az struct adatai önmagukra vannak korlátozva, és más sztrukták számára nem látható. A dolgok világossá tétele érdekében mondhatjuk, hogy a „grocery_entrance” adatai nem minden más üzlet számára nyilvánosan láthatók..
  • Elhaladás referenciaként és érték szerint: A Pass by Reference csak a memória helyét és nem a tényleges adatokat küldi a funkciókhoz. Ez azt jelenti, hogy amikor az érték megváltozik, a változás tükröződik a megfelelő függvényekben. Az érték átadása viszont csak az érték elküldése a függvénynek. Ebben az esetben az érték változása az elküldést követően nem tükröződik a függvényben. Az osztály referenciaként használja, és a Struct átadási értéket használ.
  • Öröklés: Az osztályok tovább örökölhetők alosztályok létrehozására, de a sztrikták nem használhatják fel az öröklést. Például az Osztali áruház feladatait az 'élelmiszerbolt' alosztálynak adja. De a 'grocery_entrance' sztruktúra nem örökölhet semmilyen funkciót. Azt mondhatjuk, hogy itt nincs olyan fogalom, mint az alstruktúra.
  • Alapértelmezett láthatóság: Az Osztály összes tagját alapértelmezés szerint magántulajdonban lévő személyeknek tekintik, míg a Struct tagjait alapértelmezés szerint állami szervezeteknek kell tekinteni.
  • Egy üres osztály és sztrusz mérete: Az osztály 1 bájt méretű még akkor is, ha üres, míg a Struct soha nem használ memóriát, amikor üres. Ez azt jelenti, hogy mondhatjuk, hogy egy üres struktúra mérete 0 byte.
  • Szemétgyüjtés: A szemétgyűjtés az osztályokkal lehetséges, mivel referenciaként használják. Ezért a tisztítást könnyebb elvégezni egy helyen, ahol az adatokat tárolják. Másrészt a Struct nem képes a szemetek gyűjtésére, mivel az érték szerint jár, és az adatok különböző helyekre vannak szétszórva.
  • Memóriakezelés: Mivel az osztály lehetővé teszi a szemetes gyűjtést, a memóriakezelés szintén hatékony; azonban a Structs esetében ez nem olyan hatékony.
  • Konstruktőr: A konstruktor általában megadott értékekkel inicializálja az osztályt. Úgy tekinthetjük rá, mint amit értékekkel inicializáltunk. Ha új osztályt kell létrehozni, akkor a kivitelezőt hívják fel arra, hogy memóriát rendeljen az adott példányhoz. Még értékeket is átadhatunk érvekként, miközben kivitelezőt hívjuk. Most menjünk a tényleges megbeszélésünkhöz. Az osztályok bármilyen konstruktorát megengedik, például argumentumokkal vagy anélkül, míg az építőelemek csak az argumentumokkal engedélyezik a konstruktorokat, azaz a paraméterezett konstruktorokat.
  • Pusztító: Rombolót hívunk, amikor törölnünk kell egy osztálypéldányt. A pusztító viszont törli ezt a példányt, és felszabadítja a memóriát. Egy osztály használhat pusztítót, míg a sztrájk nem.
  • Tagváltozó inicializálása: Az osztályokban közvetlenül inicializálhatjuk a tagváltozókat; ilyen inicializálás nem lehetséges a Structs segítségével.
  • Objektum létrehozása: Az osztályok objektum létrehozásának általános szintaxisa:

Demo obj = új Demo ();

Ez azt jelenti, hogy az osztály új objektumainak létrehozásakor az 'új' kulcsszót kell használnunk. Erre nincs szükség, ha Structs objektumokat hoz létre. Csak nézd meg a szintaxist:

Demo obj;

Tökéletesen működik még az 'új' kulcsszó nélkül is.

Mikor kell használni az osztályt és mikor kell használni a réteget?

Mivel az osztályok rugalmasabban kezelik az adatokat és a funkciókat együtt, akkor továbbléphetünk, ha az alkalmazott objektumok összetettek és nagyok. Példánkban egy bevásárlóközpont felhasználhatja a „bolt” osztályt a rendszer jobb kifejezésére. A sztrátok azonban kisebb objektumokra korlátozódnak, mivel ezek viszonylag kevésbé hatékonyak, mint az osztályok. Ezért, ha saját üzletét tervezi, a sztrátok jobb választás.

Hogyan lehet átalakítani egy sztrákt osztálytá és viceversává?

Lehet, hogy hallotta a „boksz” és a „dobozolás” kifejezéseket, hogy a Structot osztályra konvertálja, és fordítva. Noha ezek hatékony folyamatok segítenek bennünket az átalakulásban, ezeket óvatosan kell kezelni. Mivel ez közvetlenül érinti a memóriahelyeket, óriási hatással van a rendszerünk teljesítményére. Ezenkívül befolyásolja a szemétszedési folyamatokat, és a rendszer általános hatékonyságát eredményezi. Ezért ezeket a konverziókat csak szükség esetén használja.

Nézzük meg a fenti különbségeket táblázatos formában.

S.No fogalmak Különbségek
Osztály struktúra
1 Újrahasználhatóság Teljesen újrafelhasználható Nem használható fel újra
2 Láthatóság Az osztály összes funkciója látható az objektumai számára A sztráktárgy objektumainak adatai nem láthatók ugyanazon sztruktúra más objektumai számára
3 Haladjon referenciaként és adja át az értéket Használja a referenciát Használ érték szerint
4 Öröklés Az osztály funkcióit alosztályai örökölhetik; lehetővé teszi az öröklést Soha nem engedélyezi az öröklést
5 Alapértelmezett láthatóság Az osztály összes tagja alapértelmezés szerint privát Alapértelmezés szerint a Struct összes tagja nyilvános
6 Üres méret Egy üres osztály mérete 1 bájt Az üres sztrájk mérete 0 bájt
7 Szemétgyüjtés Mivel referenciaként használja, a hulladékgyűjtés lehetséges Mivel az érték elhaladását használja, a hulladék gyűjtése nem lehetséges
8 Memóriakezelés A hulladékgyűjtési folyamat egyszerűsége elősegíti a hatékony memóriakezelést A hulladékgyűjtés hiánya rossz memóriakezelést eredményez
9 Constructors Minden típusú építőt lehetővé tesz, például paraméterekkel vagy anélkül Csak a paraméterezett konstruktorokat engedélyezi
10 destruktorok Használhatja Nem használható
11 Tagváltozó inicializálása Lehetővé teszi a tagváltozó közvetlen inicializálását Nem engedélyezi a tagváltozó közvetlen szóindítását
12 Objektum létrehozása Az „új” kulcsszó használata kötelező az objektumok létrehozása során Opcionális az 'új' kulcsszó használata az objektum létrehozása során
13 Mikor kell használni?? Jobb nagyobb és összetett tárgyak esetén, ahol öröklésre van szükség Jobb kisebb és egyszerűbb tárgyak esetén, ahol az öröklés kevésbé fontos.

Már majdnem lefedtük az osztály és a Struct közötti különbségeket, és ha úgy érzi, hogy valami hiányzik, kérjük, ossza meg velünk. Tanuljunk együtt, és használjuk ki a legtöbbet ebből az ismeretből!