Recomandat, 2024

Alegerea Editorului

Diferența dintre structură și clasă

Atât o structură, cât și o clasă oferă o modalitate de a crea un tip de date personalizat care poate fi utilizat în continuare pentru a crea instanțe. C ++ extinde rolul structurii pentru a crea o clasă. Atât structura cât și clasa, sunt similare în toate privințele, cu excepția unei diferențe care, în mod implicit, structura are toți membrii ca fiind "publici", iar clasa implicită are toți membrii "privați". Să studiem diferența dintre structură și clasă utilizând diagrama comparativă.

Diagramă de comparație

Bazele comparațieiStructuraClasă
De bazăDacă specificatorul de acces nu este declarat, implicit toți membrii sunt "publici".Dacă specificatorul de acces nu este declarat, în mod implicit toți membrii sunt "private".
Declaraţiestruct struct_name {
tip struct_element 1;
tip struct_element 2;
tip struct_element 3;
.
.
.
};
class_name_name {
membru de date;
funcția membrilor;
};
InstanțăInstanța "structurii" se numește "variabilă de structură".Instanța unei "clase" se numește "obiect".

Definiția structurii

O structură este o colecție de variabile de tipuri diferite de date, toate fiind menționate printr-un singur nume. O declarație de structură formează un șablon care este folosit pentru a crea o instanță a structurii. Structura este declarată după cum urmează.

 struct sname {tip struct_element1; tip struct_element2; tip struct_element3; . . . } variabilă1, variabilă2, . . .; 

Cuvântul cheie "struct" definește compilatorului că este declarată o structură. "Sname" reprezintă numele dat structurii. Declarația structurii este întotdeauna terminată cu un punct și virgulă, deoarece este considerată ca o declarație. Puteți declara instanțele structurii înainte de terminarea acesteia, așa cum ați făcut în codul de mai sus (variabila1, variabila2) sau puteți declara instanța structurii în main (), scriind numele instanței precedat cu numele structurii.

 // exemplu. main () {sname S1, S2; } 

Aici S1 și S2 sunt instanțele structurii. Exemplele structurii se numesc "variabilă de structură". Elementul declarat în interiorul corpului de structură poate fi accesat prin variabilele structurii prin utilizarea operatorului punct (.).

 // exemplu S1. struct_element1; 
  • De asemenea, poate fi creată matricea de structură, pentru aceasta, mai întâi trebuie să declarați o structură și apoi să declarați o matrice de acest tip.
 // sample struct sname sarray [10]; 

Instrucțiunea de mai sus creează o matrice cu numele "sarray" care conține zece variabile și fiecare variabilă este organizată așa cum este definită în "sname".

  • Puteți trece un membru al structurii unei funcții și puteți trece o structură întreagă unei funcții.
  • Ca și pointerul întreg, pointerul matricei, pointerul structurii poate fi de asemenea declarat prin plasarea "*" în partea din față a numelui variabilelor structurii.
 // sample struct sname * S1; 

Notă:

Elementele de "structură" sunt stocate într-o locație de memorie contiguă.

Definiția Class

Clasa în OOP definește un tip nou care conține elemente de date și funcția membru, care sunt folosite pentru a accesa membrii de date din clasă. Exemplele de clase se numesc "obiecte", fiecare dintre ele având aceeași organizație ca și clasă. Clasa este o abstracție logică, în timp ce un obiect are o existență fizică. Clasa este similară sintactic cu structura. Clasa poate fi declarată după cum urmează.

 class_name {nume de date private și funcții membre. tipul accesului_specific date_member; tip mem_funct (lista parametrilor) {. . }} lista de obiecte; 

Aici, clasa este un cuvânt cheie care declară compilatorului că a fost declarată o clasă. Principala caracteristică a OOP este ascunderea datelor, care se realizează prin furnizarea a trei specificatori de acces care sunt "publici", "privați", "protejați". Dacă nu specificați nici un specificator de acces în clasă în timp ce declarați membri de date sau funcții membre, în mod prestabilit, toate sunt considerate private. Specificatorul de acces public permite ca funcțiile sau datele să fie accesate de alte părți ale programului dvs. Membrii privați ai clasei pot fi accesați numai de un membru al clasei respective. Specificatorul de acces protejat este aplicat în timpul moștenirii. Odată ce declarați specificatorul de acces, acesta nu poate fi modificat pe tot parcursul programului.

Obiectele nu sunt altceva decât exemplul clasei. Membrii clasei sunt accesați de obiectul din aceeași clasă folosind un operator punct (.).

 //object.mem_funct (argumente); 
  • Obiectul poate fi, de asemenea, trecut ca un argument pentru o funcție.
  • Pointerul unui obiect poate fi, de asemenea, creat.

Diferențe cheie între structură și clasă

  1. Principala diferență între structuri și clase este că, în mod implicit, toți membrii structurii sunt publici, în timp ce, implicit, toți membrii clasei sunt privați.

asemănări:

  • În C ++, structura și clasa sunt echivalente sintactic.
  • Atât structura, cât și clasa pot declara unii dintre membrii lor privați.
  • Numele unei structuri sau al unei clase poate fi folosit ca tip autonom.
  • Atât structura cât și o clasă susțin mecanismul de moștenire.

Concluzie:

Structura din C a avut unele dintre limitări, deoarece structura nu permite ascunderea datelor, tipul de date struct nu ar putea fi tratat ca tipurile încorporate, structurile nu suportă moștenirea. Structura în C ++ a depășit aceste limite. În C ++, clasele sunt versiunea extinsă a structurii. Programatorul găsește că este ușor să folosești clasa pentru a ține datele și pentru a funcționa atât pe structură, cât și pentru a ține datele.

Top