Differenza tra struttura e classe

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 1 Maggio 2024
Anonim
Differenza classi Indirizzi IP
Video: Differenza classi Indirizzi IP

Contenuto


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 di 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 suoi membri come "pubblici" e la classe di default ha tutti i suoi membri "privati". Studiamo la differenza tra struttura e classe utilizzando la tabella di confronto.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Somiglianze
  5. Conclusione

Tabella di comparazione

Base per il confrontoStrutturaClasse
Di base Se l'identificatore di accesso non viene dichiarato, per impostazione predefinita tutti i membri sono pubblici.Se l'identificatore di accesso non viene dichiarato, per impostazione predefinita tutti i membri sono privati.
Dichiarazione struct nome_struttura {
digitare struct_element 1;
digitare struct_element 2;
digitare struct_element 3;
.
.
.
};
class nome_classe {
membro dei dati;
funzione membro;
};
Esempio L'istanza di struttura si chiama variabile di struttura.L'istanza di una classe si chiama oggetto.


Definizione di struttura

Una struttura è una raccolta di variabili di tipi di dati diversi, a cui fa riferimento un solo nome. Una dichiarazione di struttura forma un modello utilizzato per creare un'istanza della struttura. La struttura è dichiarata come segue.

struct sname {tipo struct_element1; digitare struct_element2; digitare struct_element3; . . . } variabile1, variabile2,. . .;

La parola chiave "struct" definisce al compilatore che viene dichiarata una struttura. "Sname" rappresenta il nome assegnato alla struttura. La dichiarazione di struttura viene sempre terminata da un punto e virgola, poiché viene considerata come un'istruzione. Puoi dichiarare le istanze della struttura prima della sua conclusione come fatto nel codice sopra (variabile1, variabile2) oppure puoi dichiarare l'istanza della struttura in main (), scrivendo il nome dell'istanza preceduto dal nome della struttura.


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

Qui S1 e S2 sono le istanze della struttura. Le istanze della struttura sono chiamate "variabile di struttura". È possibile accedere all'elemento dichiarato all'interno del corpo della struttura tramite le variabili di struttura mediante l'uso dell'operatore punto (.).

// esempio S1. struct_element1;

  • L'array di struttura può anche essere creato, per questo, devi prima dichiarare una struttura e poi, dichiarare un array di quel tipo.

// sample struct sname sarray;

L'istruzione precedente crea un array con il nome "sarray" contenente dieci variabili e ciascuna variabile è organizzata come definito in "sname".

  • È possibile passare un membro della struttura a una funzione e passare un'intera struttura a una funzione.
  • Come il puntatore intero, il puntatore a matrice, un puntatore a struttura può anche essere dichiarato posizionando "*" in primo piano rispetto al nome delle variabili della struttura.

// campione 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 di dati e funzione membro, che vengono utilizzati per accedere ai membri di dati della classe. Le istanze delle classi sono chiamate "oggetti", ognuna delle 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 di dati privati ​​e funzioni membro. tipo access_specifier data_member; digitare mem_funct (elenco parametri) {. . }} elenco oggetti;

Qui, la classe è una parola chiave che dichiara al compilatore che è stata dichiarata una classe. La caratteristica principale di OOP è il nascondimento dei dati che viene realizzato fornendo tre specificatori di accesso che sono "pubblici", "privati", "protetti". Se non si specifica alcun identificatore di accesso nella classe durante la dichiarazione dei membri dei dati o delle funzioni dei membri, per impostazione predefinita tutti sono considerati privati. Lo specificatore di accesso pubblico consente a funzioni o dati di accedere ad altre parti del programma. Ai membri privati ​​della classe è possibile accedere solo da un membro di quella classe. L'identificatore 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. Ai membri della classe si accede 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.
  1. La differenza principale 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.

Somiglianze:

  • 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 di una classe può essere utilizzato come tipo autonomo.
  • Sia la struttura che una classe supportano il meccanismo dell'ereditarietà.

Conclusione:

La struttura in C presentava alcune limitazioni in quanto la struttura non consentiva il nascondimento dei dati, il tipo di dati "struct" non poteva essere trattato come tipi predefiniti, 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 usare la classe per conservare i dati e funzionare entrambi e strutturare solo per conservare i dati.