Összehasonlító táblázat
Az összehasonlítás alapja | Szerkezet | Osztály |
---|---|---|
Alapvető | Ha a hozzáférési specifikátort nem adják meg, alapértelmezés szerint minden tag „nyilvános”. | Ha a hozzáférési specifikátort nem adják meg, alapértelmezés szerint minden tag „privát”. |
Nyilatkozat | struct structure_name { type struct_element 1; type struct_element 2; type struct_element 3; . . . }; | osztályosztálynév { adat tag; tagfunkció; }; |
Példa | A „szerkezet” példáját „strukturális változónak” nevezik. | Az „osztály” példányát „objektumnak” nevezzük. |
A szerkezet meghatározása
A struktúra a különböző adattípusok változóinak gyűjteménye, amelyek egy névvel hivatkoznak. A szerkezeti nyilatkozat egy sablont alkot, amelyet a struktúra példányának létrehozására használnak. A szerkezetet a következőképpen nyilvánították.
struct sname {type struct_element1; type struct_element2; type struct_element3; . . . } 1-es változó, 2-es változó. . .;
A "struct" kulcsszó a fordító számára meghatározza, hogy egy struktúra van bejelentve. A „sname” a szerkezetnek adott nevet jelenti. A szerkezeti nyilatkozatot mindig pontosvesszővel szünteti meg, mivel azt kijelentésnek tekintik. Kijelölheti a szerkezet példányait a felmondás befejezése előtt, mint a fenti kódban (változó1, változó2), vagy deklarálhatja a struktúra példányát a főben (), ha a példány nevét a struktúra neve előtt írja.
// példa. main () {sname S1, S2; }
Itt az S1 és S2 a struktúra példái. A szerkezet példányait „strukturális változónak” nevezik. A struktúrán belül bejelentett elem hozzáférhető a szerkezeti változókon keresztül pont (.) Operátor használatával.
// példa S1. struct_element1;
- A struktúra tömbje is létrehozható, ehhez először egy struktúrát kell bejelentenie, majd egy ilyen típusú tömböt kell bejelentenie.
// minta struktúra sname sarray [10];
A fenti utasítás létrehoz egy tömböt, amelynek neve „sarray”, amely tíz változót tartalmaz, és minden változó a „sname” definícióban meghatározott módon van rendezve.
- Átadhat egy struktúra tagot egy függvénynek, és átadhat egy teljes struktúrát egy függvénynek.
- Mint egész szám mutató, tömb mutató, egy struktúra mutató is deklarálható a '*' elhelyezésével a struktúra változók neve elején.
// minta struktúra sname * S1;
Jegyzet:
A „struktúra” elemeket egy egymás melletti memóriahelyen tárolják.
Az osztály meghatározása
Az OOP osztály egy új típust határoz meg, amely adat tagokat és tagfunkciót tartalmaz, amelyek az osztály adatainak tagjai eléréséhez használatosak. Az osztályok példáit „objektumoknak” nevezik, amelyek mindegyike ugyanazzal a szervezettel rendelkezik, mint az osztály. Az osztály logikai absztrakció, míg egy objektum fizikai létezéssel rendelkezik. Az osztály szintaktikailag hasonló a struktúrához. Az osztály követhető.
class class_name {magánadat-tagok és tagfunkciók. access_specifier típus data_member; írja be mem_funct (paraméterlista) {. . }} objektumlista;
Itt az osztály olyan kulcsszó, amely kijelenti a fordítónak, hogy egy osztályt bejelentettek. Az OOP fő jellemzője az adatok elrejtése, amelyet úgy érünk el, hogy három hozzáférési specifikációt biztosítanak, amelyek „nyilvános”, „privát”, „védett”. Ha nem ad meg hozzáférési adatot az osztályban az adat tagok vagy tagfunkciók bejelentésekor, alapértelmezés szerint mindegyik privátnak minősül. A nyilvános hozzáférés-beállítás lehetővé teszi, hogy a funkciók vagy adatok hozzáférhetők a program más részeihez. Az osztály magánszemélyeit csak az adott osztály tagja veheti igénybe. A védett hozzáférési specifikációt az öröklés során alkalmazzák. Miután bejelentette a hozzáférési specifikátort, a program nem változtatható meg.
A tárgyak semmi más, mint az osztályok példája. Az osztály tagjait ugyanabba az osztályba a pont (.) Operátor segítségével érhetjük el.
//object.mem_funct (argumentumok);
- Az objektum argumentumként is átadható egy függvénynek.
- Az objektum mutatója is létrehozható.
A struktúra és az osztály közötti különbségek
- A struktúrák és az osztályok között a fő különbség az, hogy alapértelmezés szerint a struktúra minden tagja nyilvános, míg az osztály minden tagja magán.
Hasonlóságok:
- A C ++-ban a szerkezet és az osztály szintaktikailag egyenértékű.
- Mind a struktúra, mind az osztály egyes tagjait saját maguk jelezhetik.
- A szerkezet vagy osztály neve önálló típusként használható.
- A szerkezet és az osztály egyaránt támogatja az öröklés mechanizmusát.
Következtetés:
A C struktúrának volt néhány korlátja, mivel a struktúra nem teszi lehetővé az adatok elrejtését, a 'struct' adattípust nem lehet úgy kezelni, mint a beépített típusokat, a struktúrák nem támogatják az öröklést. A C ++ felépítése leküzdte ezeket a korlátozásokat. C ++-ban az osztályok a szerkezet kibővített változata. A programozónak könnyű az osztály használata az adatok tárolásához és mind a szerkezet, mind az adat tárolásához.