Skirtumas tarp struktūros ir klasės

Autorius: Laura McKinney
Kūrybos Data: 1 Balandis 2021
Atnaujinimo Data: 4 Gegužė 2024
Anonim
Ląstelės ir jų struktūra
Video.: Ląstelės ir jų struktūra

Turinys


Tiek struktūra, tiek klasė suteikia būdą sukurti tinkintą duomenų tipą, kuris gali būti toliau naudojamas kuriant egzempliorius. C ++ išplečia struktūros vaidmenį kuriant klasę. Tiek struktūra, tiek klasė visais atžvilgiais yra panašūs, išskyrus vieną skirtumą, pagal kurį visi struktūros nariai pagal numatytuosius nustatymus yra „vieši“, o klasė pagal nutylėjimą yra „privati“. Ištirkime skirtumą tarp struktūros ir klasės naudodamiesi palyginimo diagrama.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Panašumai
  5. Išvada

Palyginimo diagrama

Palyginimo pagrindasStruktūraKlasė
Pagrindinis Jei prieigos specifikacija nėra deklaruojama, visi nariai yra vieši.Jei prieigos specifikacija nėra deklaruojama, pagal numatytuosius nustatymus visi nariai yra privatūs.
Deklaracija struktūros_pavadinimas {
tipo struct_element 1;
tipo struct_element 2;
tipo struct_element 3;
.
.
.
};
klasė klasės_vardas {
duomenų narys;
nario funkcija;
};
Instancija Struktūros pavyzdys vadinamas struktūros kintamuoju.Klasės egzempliorius vadinamas objektu.


Struktūros apibrėžimas

Struktūra yra skirtingų duomenų tipų kintamųjų rinkinys, visi nurodomi vienu vardu. Struktūros deklaracija sudaro šabloną, kuris naudojamas struktūros egzemplioriui sukurti. Skelbiama, kad struktūra tokia.

struct sname {tipas struct_element1; tipas struct_element2; tipas struct_element3; . . . } kintamasis1, kintamasis2,. . .;

Raktinis žodis „struct“ kompiliatoriui nurodo, kad struktūra yra deklaruojama. „Pavardė“ reiškia struktūrai suteiktą pavadinimą. Struktūros deklaracija visada nutraukiama kabliataškiu, nes ji laikoma teiginiu. Galite deklaruoti struktūros egzempliorius prieš ją nutraukdami, kaip padaryta aukščiau esančiame kode (kintamasis1, kintamasis2), arba galite deklaruoti struktūros egzempliorių main (), užrašydami egzemplioriaus pavadinimą, prieš kurį eina struktūros pavadinimas.

// pavyzdys. pagrindinis () {vardas S1, S2; }

Čia S1 ir S2 yra struktūros pavyzdžiai. Struktūros egzemplioriai vadinami „struktūros kintamuoju“. Elementą, deklaruojamą struktūros viduje, galima pasiekti per struktūros kintamuosius naudojant tašką (.).


// S1 pavyzdys. struct_element1;

  • Taip pat galima sukurti struktūros masyvą, tam pirmiausia reikia deklaruoti struktūrą, tada deklaruoti tokio tipo masyvą.

// pavyzdys struct sname sarray;

Aukščiau esančiame teiginyje sukuriamas masyvas pavadinimu „sarray“, kuriame yra dešimt kintamųjų, ir kiekvienas kintamasis yra išdėstytas taip, kaip apibrėžta „sname“.

  • Galite perduoti struktūros narį funkcijai, o visą struktūrą galite perduoti funkcijai.
  • Kaip ir sveikasis rodyklė, masyvo rodyklė, struktūros rodyklę taip pat galima deklaruoti, įvedant „*“ į struktūros kintamųjų pavadinimo priekį.

// pavyzdys strukt sname * S1;

Pastaba:

„Struktūros“ elementai saugomi gretimoje atminties vietoje.

Klasės apibrėžimas

OOP klasė apibrėžia naują tipą, kuriame yra duomenų nariai ir nario funkcija, naudojami prieigai prie klasės duomenų narių. Klasių egzemplioriai vadinami „objektais“, kurių kiekvieno organizacija yra tokia pati kaip klasės. Klasė yra logiška abstrakcija, tuo tarpu objektas turi fizinę egzistenciją. Klasė sintaksiniu požiūriu yra panaši į struktūrą. Klasę galima paskelbti sekančia.

klasė klasės_vardas {asmeninių duomenų nariai ir narių funkcijos. prieigos_specifikatoriaus tipas data_member; įveskite mem_funct (parametrų sąrašas) {. . }} objektų sąrašas;

Čia klasė yra raktinis žodis, kuris kompiliatoriui pareiškia, kad klasė buvo deklaruota. Pagrindinis OOP bruožas yra duomenų slėpimas, kuris pasiekiamas pateikiant tris prieigos specifikacijas, kurios yra „vieša“, „privati“, „apsaugota“. Jei deklaruodami duomenų narius ar narių funkcijas klasėje nenurodėte jokio prieigos specifikavimo, pagal numatytuosius nustatymus visi laikomi privačiais. Viešosios prieigos specifikatorius leidžia naudotis funkcijomis ar duomenimis kitose jūsų programos dalyse. Privačius klasės narius gali pasiekti tik tos klasės narys. Apsaugotos prieigos specifikacija taikoma paveldėjimo metu. Kai paskelbiate prieigos specifikatorių, jo negalima pakeisti visoje programoje.

Objektai yra ne kas kitas, o klasių pavyzdys. Tos pačios klasės objektas klasės nariams prieinamas naudojant taškinį (.) Operatorių.

//object.mem_funct (argumentai);

  • Objektas taip pat gali būti perduodamas kaip argumentas funkcijai.
  • Taip pat gali būti sukurtas žymeklis prie objekto.
  1. Pagrindinis skirtumas tarp struktūrų ir klasių yra tas, kad pagal nutylėjimą visi struktūros nariai yra vieši, tuo tarpu pagal nutylėjimą visi klasės nariai yra privatūs.

Panašumai:

  • C ++ klasėje struktūra ir klasė yra sintaksiškai lygiaverčiai.
  • Tiek struktūra, tiek klasė gali kai kuriuos savo narius paskelbti privačiais.
  • Statinio ar klasės pavadinimas gali būti naudojamas kaip atskiras tipas.
  • Ir struktūra, ir klasė palaiko paveldėjimo mechanizmą.

Išvada:

C struktūroje buvo tam tikrų apribojimų, nes struktūra neleidžia paslėpti duomenų, „struktūrinis“ duomenų tipas negalėjo būti traktuojamas kaip įmontuoti tipai, struktūros nepalaiko paveldėjimo. C ++ struktūra viršijo šiuos apribojimus. C ++ klasėse yra išplėstinė struktūros versija. Programuotojui lengva naudoti klasę duomenims laikyti ir funkcionuoti, ir struktūrą naudoti tik duomenims laikyti.