Raccomandato, 2024

Scelta Del Redattore

Differenza tra struttura e classe

Sia una struttura che una classe forniscono un modo per creare un tipo di dati personalizzato che può essere utilizzato ulteriormente per creare istanze. C ++ espande il ruolo della struttura per creare una classe. Sia la struttura che la classe sono simili sotto tutti gli aspetti tranne una differenza che, per impostazione predefinita, la struttura ha tutti i membri come "pubblici" e la classe per impostazione predefinita ha tutti i membri "privati". Studiamo la differenza tra struttura e classe usando la tabella di confronto.

Grafico comparativo

Base per il confrontoStrutturaClasse
Di baseSe l'identificatore di accesso non è dichiarato, per impostazione predefinita tutti i membri sono "pubblici".Se l'identificatore di accesso non è dichiarato, per impostazione predefinita tutti i membri sono "privati".
Dichiarazionestruct nome_struttura {
digita struct_element 1;
digita struct_element 2;
digita struct_element 3;
.
.
.
};
classe class_name {
membro di dati;
funzione membro;
};
EsempioL'istanza di "struttura" è chiamata "variabile di struttura".L'istanza di una 'classe' è chiamata 'oggetto'.

Definizione di Struttura

Una struttura è una raccolta di variabili di tipi di dati diversi, tutte referenziate da un solo nome. Una dichiarazione di struttura forma un modello che viene utilizzato per creare un'istanza della struttura. La struttura è dichiarata come segue.

 struct sname {type struct_element1; digita struct_element2; digita struct_element3; . . . } variabile1, variabile2, . . .; 

La parola chiave 'struct' definisce al compilatore che una struttura viene dichiarata. Il 'sname' rappresenta il nome dato alla struttura. La dichiarazione della struttura viene sempre terminata da un punto e virgola, poiché viene considerata come una dichiarazione. È possibile dichiarare le istanze della struttura prima della sua terminazione come fatto nel codice precedente (variabile1, variabile2) oppure è possibile dichiarare l'istanza della struttura in main (), scrivendo il nome dell'istanza preceduto con il nome della struttura.

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

Qui S1 e S2 sono le istanze della struttura. Le istanze della struttura sono chiamate "variabile struttura". L'elemento dichiarato all'interno del corpo della struttura è accessibile tramite le variabili della struttura tramite l'uso dell'operatore punto (.).

 // esempio S1. struct_element1; 
  • La matrice di strutture può anche essere creata, per questo è necessario prima dichiarare una struttura e quindi dichiarare una matrice di quel tipo.
 // sample struct sname sarray [10]; 

L'istruzione precedente crea una matrice con il nome "sarray" contenente dieci variabili e ogni variabile è organizzata come definita in "sname".

  • È possibile passare un membro della struttura a una funzione e passare un'intera struttura a una funzione.
  • Come puntatore intero, puntatore a matrice, un puntatore a struttura può anche essere dichiarato posizionando '*' nella parte anteriore del nome delle variabili di struttura.
 // sample struct sname * S1; 

Nota:

Gli elementi 'struttura' sono memorizzati in una posizione di memoria contigua.

Definizione di Classe

La classe in OOP definisce un nuovo tipo che contiene membri dati e funzione membro, che sono utilizzati per accedere ai membri dati della classe. Le istanze delle classi sono chiamate "oggetti" ognuno dei quali ha la stessa organizzazione di una classe. La classe è un'astrazione logica, mentre un oggetto ha un'esistenza fisica. La classe è sintatticamente simile alla struttura. La classe può essere dichiarata come segue.

 class class_name {membri dati privati ​​e funzioni membro. access_specifier type data_member; digita mem_funct (elenco parametri) {. . }} elenco degli oggetti; 

Qui, la classe è una parola chiave che dichiara al compilatore che una classe è stata dichiarata. La caratteristica principale di OOP è l'occultamento dei dati che si ottiene fornendo tre specificatori di accesso che sono "pubblici", "privati", "protetti". Se non si specifica alcun identificatore di accesso nella classe mentre si dichiarano i membri dati o le funzioni membro, per impostazione predefinita tutti sono considerati privati. Lo specificatore di accesso pubblico consente a funzioni, dati o dati di accedere ad altre parti del programma. È possibile accedere ai membri privati ​​della classe solo da un membro di quella classe. Lo specificatore di accesso protetto viene applicato durante l'ereditarietà. Una volta dichiarato l'identificatore di accesso, non può essere modificato in tutto il programma.

Gli oggetti non sono altro che l'istanza delle classi. I membri della classe sono raggiunti dall'oggetto della stessa classe usando un operatore punto (.).

 //object.mem_funct (argomenti); 
  • L'oggetto può anche essere passato come argomento a una funzione.
  • È anche possibile creare il puntatore a un oggetto.

Differenze chiave tra struttura e classe

  1. La principale differenza tra strutture e classi è che per impostazione predefinita tutti i membri della struttura sono pubblici mentre, per impostazione predefinita, tutti i membri della classe sono privati.

Analogie:

  • In C ++ sia la struttura che la classe sono sintatticamente equivalenti.
  • Sia la struttura che la classe possono dichiarare privati ​​alcuni dei loro membri.
  • Il nome di una struttura o classe può essere utilizzato come un tipo autonomo.
  • Sia la struttura che una classe supportano il meccanismo dell'ereditarietà.

Conclusione:

La struttura in C aveva alcune limitazioni in quanto la struttura non consente il nascondimento dei dati, il tipo di dati 'struct' non può essere trattato come tipi built-in, le strutture non supportano l'ereditarietà. La struttura in C ++ ha superato queste limitazioni. In C ++, le classi sono la versione espansa della struttura. Il programmatore trova facile utilizzare la classe per contenere i dati e funzionare entrambi e struttura solo per contenere i dati.

Top