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.
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 ();
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.
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.
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.
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.
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!