C++ Classe e oggetto con esempio
⚡ Riepilogo intelligente
Classi e oggetti in C++ Costituiscono il fondamento della programmazione orientata agli oggetti, dove una classe definisce un modello di dati e funzioni membro, e un oggetto è un'istanza concreta creata a partire da tale modello.

Cos'è una classe?
A C++ La classe combina dati e metodi per manipolare i dati in uno solo. Le classi determinano anche le forme degli oggetti. I dati e i metodi contenuti in una classe sono noti come membri della classe. Una classe è un tipo di dati definito dall'utente. Per accedere ai membri della classe, utilizziamo un'istanza della classe. Puoi vedere una classe come un progetto per un oggetto.
Una classe può fungere da prototipo per una casa. Essa mostra la posizione e le dimensioni di porte, finestre, piani, ecc. A partire da queste descrizioni, possiamo costruire una casa. La casa diventa l'oggetto. È possibile creare molte case a partire dal prototipo. Allo stesso modo, è possibile creare molti oggetti a partire da una classe.
Nella figura sopra, abbiamo un prototipo di casa singola. Da questo prototipo abbiamo realizzato due case con caratteristiche diverse.
Tenendo presente l'idea di una classe come modello, il passo successivo è vedere come viene dichiarata nel codice.
Dichiarazione di classe
In C++Una classe viene definita utilizzando la parola chiave `class`. Questa deve essere seguita dal nome della classe. Il corpo della classe viene quindi aggiunto tra parentesi graffe { }.
Sintassi
class class-name { // data // functions };
- Migliori nome della classe è il nome da assegnare alla classe.
- Migliori dati sono i dati per la classe, normalmente dichiarati come variabili.
- Migliori funzioni sono le funzioni di classe.
Dichiarare il nome della classe e il suo corpo solleva naturalmente la questione di chi possa utilizzare ciascun membro.
Parole chiave private e pubbliche
Devi esserti imbattuto in queste due parole chiave. Sono modificatori di accesso.
Privato:
Quando la parola chiave private viene utilizzata per definire una funzione o una classe, diventa privata. Questi sono accessibili solo dall'interno della classe.
Pubblico:
La parola chiave public, invece, rende pubblici i dati/funzioni. Questi sono accessibili dall'esterno della classe.
Una volta creata una classe, è possibile creare oggetti a partire da essa, proprio come si creano variabili a partire da un tipo di dato.
Definizione dell'oggetto
Gli oggetti vengono creati a partire dalle classi. Gli oggetti di classe vengono dichiarati in modo simile alle variabili. Il nome della classe deve venire prima, seguito dal nome dell'oggetto. L'oggetto è di tipo classe.
Sintassi
class-name object-name;
- Migliori nome della classe è il nome della classe da cui deve essere creato un oggetto.
- Migliori nome-oggetto è il nome da assegnare al nuovo oggetto.
Questo processo di creazione di un oggetto da una classe è noto come istanziazione.
Una volta creato un oggetto, i suoi membri pubblici possono essere raggiunti direttamente tramite un semplice operatore.
Accesso ai dati dei membri
Per accedere ai membri pubblici di una classe, utilizziamo l'operatore (.)punto. Questi sono i membri contrassegnati con il modificatore di accesso pubblico.
esempio 1
#include <iostream> using namespace std; class Phone { public: double cost; int slots; }; int main() { Phone Y6; Phone Y7; Y6.cost = 100.0; Y6.slots = 2; Y7.cost = 200.0; Y7.slots = 2; cout << "Cost of Huawei Y6 : " << Y6.cost << endl; cout << "Cost of Huawei Y7 : " << Y7.cost << endl; cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl; cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl; return 0; }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Includi il file header iostream nel nostro codice per poter utilizzare le sue funzioni.
- Includere lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Dichiarare una classe denominata Phone.
- Utilizzando il modificatore di accesso pubblico per contrassegnare le variabili che stiamo per creare come accessibili pubblicamente.
- Dichiara il costo variabile di un tipo di dati double.
- Dichiara una variabile intera denominata slots.
- Fine del corpo della classe.
- Chiamando la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno del suo corpo.
- Crea un oggetto denominato Y6 di tipo Telefono. Questa è chiamata istanziazione.
- Crea un oggetto denominato Y7 di tipo Telefono. Questa è chiamata istanziazione.
- Accedi al costo variabile/associato della classe Telefono utilizzando l'oggetto Y6. Il valore è impostato su 100.0. Il costo di Y6 è ora impostato su 100.0.
- Accedi agli slot variabili/membro della classe Phone utilizzando l'oggetto Y6. Il valore è impostato su 2. Gli slot per Y6 sono ora impostati su 2.
- Accedi al costo variabile/associato della classe Telefono utilizzando l'oggetto Y7. Il valore è impostato su 200.0. Il costo di Y7 è ora impostato su 200.0.
- Accedi agli slot variabili/membro della classe Phone utilizzando l'oggetto Y7. Il valore è impostato su 2. Gli slot per Y7 sono ora impostati su 2.
- Stampa il costo di Y6 sulla console insieme ad altro testo.
- Stampa il costo di Y7 sulla console insieme ad altro testo.
- Stampa il numero di slot per Y6 insieme ad altro testo.
- Stampa il numero di slot per Y7 insieme ad altro testo.
- Il programma deve restituire un valore in caso di completamento positivo.
- Fine del corpo della funzione main().
I membri pubblici possono accedere a codice esterno, mentre i membri privati seguono regole di accesso molto più rigide.
Cos'è una lezione privata?
I membri della classe contrassegnati come privati sono accessibili solo tramite le funzioni definite all'interno della classe. Qualsiasi oggetto o funzione definita all'esterno della classe non può accedere direttamente a tali membri. Un membro di una classe privata è accessibile solo tramite le funzioni membro e amico.
esempio 2
#include <iostream> using namespace std; class ClassA { public: void set_a(int val); int get_a(void); private: int a; }; int ClassA::get_a(void) { return a; } void ClassA::set_a(int val) { a = val; } int main() { ClassA a; a.set_a(20); cout << "Value of a is: " << a.get_a(); return 0; }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Includi il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata ClassA.
- Utilizza il modificatore di accesso pubblico per contrassegnare il membro della classe da creare come accessibile pubblicamente.
- Crea la funzione denominata set_a() che accetta un valore intero val.
- Crea una funzione denominata get_a().
- Utilizzare il modificatore di accesso privato per contrassegnare il membro della classe da creare come accessibile privatamente.
- Dichiarare una variabile intera denominata a.
- Fine del corpo della classe.
- Utilizzare il nome della classe e l'operatore di risoluzione dell'ambito per accedere alla funzione get_a(). Vogliamo definire cosa fa la funzione quando viene invocata.
- La funzione get_a() dovrebbe restituire il valore della variabile a quando richiamata.
- Fine della definizione della funzione get_a().
- Utilizzare il nome della classe e l'operatore di risoluzione dell'ambito per accedere alla funzione set_a(). Vogliamo definire cosa fa la funzione quando viene invocata.
- Assegnazione del valore della variabile val alla variabile a.
- Fine della definizione della funzione set_a().
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Crea un'istanza di ClassA e dagli il nome a.
- Utilizza l'istanza della classe precedente e la funzione set_a() per assegnare un valore pari a 20 alla variabile a.
- Stampa del testo accanto al valore della variabile a sulla console. Il valore della variabile a si ottiene chiamando la funzione get_a().
- Il programma deve restituire valore in caso di completamento positivo.
- Fine del corpo della funzione main().
I membri protetti si collocano a metà strada tra la sfera privata e quella pubblica, aggiungendo una capacità fondamentale per la successione ereditaria.
Cos'è una classe protetta?
I membri della classe contrassegnati come protetti hanno un vantaggio rispetto a quelli contrassegnati come privati. È possibile accedervi tramite funzioni all'interno della classe della loro definizione. Inoltre, è possibile accedervi dalle classi derivate.
esempio 3
#include <iostream> using namespace std; class ParentClass { protected: int value; }; class ChildClass : public ParentClass { public: void setId(int x) { value = x; } void displayValue() { cout << "Value is: " << value << endl; } }; int main() { ChildClass c; c.setId(21); c.displayValue(); return 0; }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Includi il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata ParentClass.
- Utilizzare il modificatore di accesso protetto per contrassegnare il membro della classe da creare come protetto.
- Crea una variabile intera denominata valore.
- Fine del corpo della classe.
- Crea una nuova classe denominata ChildClass che eredita ParentClass.
- Utilizzare il modificatore di accesso protetto per contrassegnare il membro della classe da creare come accessibile alle classi figlie.
- Crea la funzione denominata setId() che accetta un valore intero x.
- Assegnazione del valore della variabile x al valore della variabile.
- Fine della definizione della funzione setId().
- Crea una funzione denominata displayValue().
- Stampa il valore della variabile denominata value sulla console insieme ad altro testo.
- Fine del corpo della funzione displayValue().
- Fine del corpo della classe denominata ChildClass.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Creare un'istanza di ChildClass e darle il nome c.
- Utilizza l'istanza della classe precedente e la funzione setId() per assegnare un valore pari a 21 alla variabile x.
- Utilizzare l'istanza della classe precedente per chiamare la funzione denominata displayValue().
- Il programma deve restituire valore in caso di completamento positivo.
- Fine del corpo della funzione main().
Oltre a memorizzare i dati, una classe raggruppa anche le funzioni che operano su tali dati.
Funzioni dei membri della classe
Le funzioni ci aiutano a manipolare i dati. Le funzioni membro della classe possono essere definite in due modi:
- All'interno della definizione della classe
- Al di fuori della definizione di classe
Se una funzione deve essere definita al di fuori di una definizione di classe, dobbiamo utilizzare l'operatore di risoluzione dell'ambito (::). Questo dovrebbe essere accompagnato dai nomi delle classi e delle funzioni.
esempio 4
#include <iostream> #include <string> using namespace std; class Guru99 { public: string tutorial_name; int id; void printname(); void printid() { cout << "Tutorial id is: "<< id; } }; void Guru99::printname() { cout << "Tutorial name is: " << tutorial_name; } int main() { Guru99 guru99; guru99.tutorial_name = "C++"; guru99.id = 1001; guru99.printname(); cout << endl; guru99.printid(); return 0; }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Includi il file header iostream nel nostro programma per utilizzare le sue funzioni.
- Includi il file di intestazione della stringa nel nostro programma per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata Guru99
- Utilizza il modificatore di accesso pubblico per contrassegnare i membri della classe che stiamo per creare come accessibili pubblicamente.
- Crea una variabile stringa denominata nome_tutorial.
- Crea una variabile intera denominata id.
- Crea una funzione denominata printname(). Questa funzione non è definita all'interno della definizione della classe.
- Crea una funzione chiamata printid(). Questa funzione è definita all'interno della definizione della classe. Il suo corpo è stato aggiunto all'interno della definizione della classe.
- Stampa il valore dell'ID variabile insieme ad altro testo sulla console. Nota che questo è stato aggiunto nel corpo della funzione printid(). Verrà eseguito solo quando viene chiamata la funzione printid().
- Fine del corpo della funzione printid().
- Fine del corpo della lezione Guru99
- L'inizio della definizione della funzione printname().
- Stampa il valore della variabile tutorial_name sulla console insieme ad altro testo. Nota che questo è stato aggiunto nel corpo della funzione printname(). Verrà eseguito solo quando viene chiamata la funzione printname().
- Fine della definizione della funzione printname().
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Crea un'istanza della classe Guru99 e dandogli il nome guru99.
- Utilizzare l'istanza precedente per assegnare un valore di C++ alla variabile nome_tutorial.
- Utilizza l'istanza guru99 per assegnare il valore 1001 alla variabile id.
- Utilizza l'istanza guru99 per chiamare la funzione printname() .
- Chiama il comando end (fine riga) per stampare una nuova riga vuota sulla console.
- Utilizza l'istanza guru99 per chiamare la funzione printid().
- Il programma deve restituire valore in caso di completamento positivo.
- Fine del corpo della funzione main().
Due funzioni membro speciali vengono eseguite automaticamente quando un oggetto viene creato e quando viene distrutto.
Costruttori e distruttori
Che cosa è un costruttore?
I costruttori sono funzioni speciali che inizializzano gli oggetti. C++ compilatori Quando si crea un oggetto, si chiama un costruttore. I costruttori aiutano ad assegnare valori ai membri della classe, dopo che a questi è stato allocato dello spazio di memoria.
Che cos'è un distruttore?
I distruttori invece aiutano a distruggere gli oggetti della classe.
Il nome del costruttore deve essere simile al nome della classe. I costruttori non hanno un tipo restituito.
Il costruttore può essere definito all'interno o all'esterno del corpo della classe. Se definito all'esterno del corpo della classe, deve essere definito con il nome della classe e l'operatore di risoluzione dell'ambito (::).
esempio 5
#include <iostream> using namespace std; class ClassA { public: ClassA() { cout << "Class constructor called"<<endl; } ~ClassA() { cout << "Class destructor called"<<endl; } }; int main() { ClassA a; int p = 1; if (p) { ClassA b; } }
Produzione:
Ecco uno screenshot del codice:
Code Spiegazione:
- Includere il file di intestazione iostream nel codice per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata ClassA.
- Utilizza il modificatore di accesso pubblico per contrassegnare il membro che stiamo per creare come accessibile pubblicamente.
- Crea un costruttore per la classe.
- Testo da stampare sulla console quando viene chiamato il costruttore. La fine è a C++ parola chiave, che significa riga di fine. Sposta il cursore del mouse sulla riga successiva.
- Fine del corpo del costruttore della classe.
- Crea un distruttore per la classe.
- Testo da stampare sulla console quando viene chiamato il distruttore. La fine è a C++ parola chiave, che significa riga di fine. Sposta il cursore del mouse sulla riga successiva.
- Fine del corpo del distruttore.
- Fine del corpo della classe.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Crea un oggetto di classe e dagli il nome a. Verrà chiamato il costruttore.
- Crea una variabile intera denominata p e assegnale il valore 1.
- Crea un blocco di istruzioni if utilizzando la variabile p.
- Creare un oggetto di classe e dargli il nome b. Verrà chiamato il distruttore.
- Fine del corpo dell'istruzione if.
- Fine del corpo della funzione main().








