Soovitatav, 2020

Toimetaja Valik

Erinevus struktuuri ja klassi vahel

Nii struktuur kui ka klass annavad võimaluse luua kohandatud andmetüübi, mida saab edasi kasutada eksemplaride loomiseks. C ++ laiendab struktuuri rolli klassi loomiseks. Nii struktuur kui ka klass on kõikides aspektides sarnased, välja arvatud üks erinevus, mille struktuuris on vaikimisi kogu oma liige „avalik” ja klassi vaikimisi on kõik selle liikmed “era-”. Uurime erinevuse struktuuri ja klassi vahel, kasutades võrdlustabelit.

Võrdluskaart

Võrdluse alusStruktuurKlass
PõhilineKui juurdepääsuandjat ei deklareerita, on kõik liikmed vaikimisi avalikud.Kui juurdepääsuandjat ei deklareerita, on kõik liikmed vaikimisi „era-”.
Deklaratsioonstruct structure_name {
tüüp struct_element 1;
tüüp struct_element 2;
tüüp struct_element 3;
.
.
.
};
klassi klassi_nimi {
andmeliige;
liikme funktsioon;
};
Näiteks"Struktuuri" nimetust nimetatakse "struktuuri muutujaks".„Klassi“ eksemplari nimetatakse „objektiks”.

Struktuuri määratlus

Struktuur on erinevate andmetüüpide muutujate kogum, mida kõik viitavad ühele nimele. Struktuurideklaratsioon moodustab malli, mida kasutatakse struktuuri eksemplari loomiseks. Struktuur on deklareeritud järgmiselt.

 struct sname {type struct_element1; tüüp struct_element2; tüüp struct_element3; . . . } muutuja1, muutuja2, . . .; 

Märksõna 'struct' määratleb kompilaatorile, et struktuur on deklareeritud. "Sname" tähistab struktuurile antud nime. Struktuurideklaratsioon lõpetatakse alati semikooloniga, nagu seda peetakse avalduseks. Te saate deklareerida struktuuri eksemplarid enne selle lõpetamist, nagu on tehtud ülaltoodud koodis (muutuja1, muutuja 2), või saate deklareerida struktuuri eksemplari peamises (), kirjutades eksemplari nime, millele eelneb struktuuri nimi.

 // näide. main () {sname S1, S2; } 

Siin on struktuuri näited S1 ja S2. Struktuuri näiteid nimetatakse „struktuuri muutujaks“. Konstruktsiooni sees deklareeritud elementi saab kasutada struktuurimuutujate kaudu, kasutades selleks dot (.) Operaatorit.

 // näide S1. struct_element1; 
  • Samuti võib luua struktuuri massiivi, selleks peate esmalt deklareerima struktuuri ja seejärel deklareerima seda tüüpi massiivi.
 // proovi struktuuriga sname sarray [10]; 

Ülaltoodud avaldus loob massiivi nimega „sarray”, mis sisaldab kümmet muutujat, ja iga muutuja on korraldatud nii, nagu see on defineeritud „sname”.

  • Te saate struktuuri liikme funktsiooni üle kanda ja kogu struktuuri saab funktsiooni üle kanda.
  • Nagu täisarvu osuti, massiivi osuti, saab struktuuri muutuja ka deklareerida, asetades struktuuri muutujate nime esiküljele '*'.
 // proovi struktuuriga sname * S1; 

Märge:

„Struktuuri” elemendid salvestatakse külgnevasse mälukohta.

Klasside määratlus

OOP-klassi määratleb uue tüübi, mis sisaldab andmeliikmeid ja liikme funktsiooni, mida kasutatakse klassi andmete liikmetele juurdepääsuks. Klasside juhtumeid nimetatakse "objektideks", millest igaühel on sama klass kui klass. Klass on loogiline abstraktsioon, samas kui objektil on füüsiline olemasolu. Klass on struktuuri poolest süntaktiliselt sarnane. Klass võib kuulutada järgmiselt.

 klassi klassi_nimi {privaatsete andmete liikmed ja liikmete funktsioonid. access_specifier tüüp data_member; tippige mem_funct (parameetrite loend) {. . }} objektide loend; 

Siin on klass märksõna, mis teatab kompilaatorile, et klass on deklareeritud. OOP põhiomadus on andmete peitmine, mis saavutatakse, kui pakutakse kolm juurdepääsuõigust, mis on „avalikud”, “era-”, “kaitstud”. Kui sa ei määra andmeliikmete või liikmete funktsioonide deklareerimisel klassi ühtegi juurdepääsuandurit, loetakse vaikimisi kõik privaatseks. Avaliku juurdepääsu spetsifikatsioon võimaldab, funktsioone või andmeid, mis on ligipääsetavad teie programmi teiste osadega. Klassi erasektori liikmeid saavad kasutada ainult selle klassi liige. Kaitstud juurdepääsu spetsifikatsiooni rakendatakse pärimise ajal. Kui olete juurdepääsu spetsifikatsiooni välja kuulutanud, ei saa seda kogu programmi jooksul muuta.

Objektid on vaid klasside näide. Klassi liikmetele pääseb sama klassi objekti abil (.) Operaatori abil.

 //object.mem_funct (argumendid); 
  • Objekti saab ka funktsiooni argumendina edastada.
  • Objekti kursorit saab luua ka.

Struktuuri ja klassi vahelised peamised erinevused

  1. Peamiseks erinevuseks struktuuride ja klasside vahel on see, et vaikimisi on kõik struktuuri liikmed avalikud, kusjuures kõik klassi liikmed on vaikimisi privaatsed.

Sarnasused:

  • C ++ puhul on nii struktuur kui ka klass süntaktiliselt samaväärne.
  • Nii struktuur kui ka klass võivad kuulutada mõned oma liikmed privaatseks.
  • Struktuuri või klassi nime saab kasutada iseseisva tüübina.
  • Nii struktuur kui ka klass toetavad pärimise mehhanismi.

Järeldus:

C-struktuuris oli mõningane piirang, kuna struktuur ei võimalda andmete peitmist, 'struktureeritud' andmesidet ei saanud käsitleda nagu sisseehitatud tüüpe, struktuurid ei toeta pärandit. C ++ struktuur ületas need piirangud. C ++ puhul on klassid struktuuri laiendatud versioon. Programmeerija leiab, et on lihtne kasutada klassi andmete hoidmiseks ja funktsiooni toimimiseks ainult andmete hoidmiseks.

Top