Originariamente inviato da web@web
Una classe è un oggetto. Per usarla la devi istanziare e puoi istanziarla in vari modi (con costruttori diversi).
Una classe è un oggetto che fa delle determinate azioni.
Per istanziare uan ipotetica Myclass devi scrivere
MyClass myc = new MyClass
Così crei unanuova istanza della classe.
Ma visto che io non sono il massimo nello spiegare le cose, fai unaricerca sul web, trovi tanti tutorial sul C++ oppure, meglio, comprati un libro.
E' importante capire che una classe non è un oggetto.
Una classe non occupa spazio in memoria e non può essere usata per contenere dati.
La funzione di una classe è quella di definire un oggetto.
Quando crei un oggetto, crei una "istanza" di una classe, cioè trasferisci tutte le funzioni e le variabili che definisce in memoria, in modo che possano essere utilizzate.
Se creo 10 oggetti, occupo 10 volte lo spazio necessario per contenere tutte le variabili e le funzioni definite dalla classe.
In questo caso fanno eccezione solo funzioni e variabili di tipo static.
Per chi conosce il C, le classi sono in un certo senso una evoluzione delle strutture.
Ogni membro (cioè una variabile o funzione che appartiene ad una classe) di una classe uo essere principalbente di 2 tipi: privato o pubblico.
I membri privati possono essere modificati (o chimati per le funzioni) solo da funzioni che appartengono ad una classe.
I membri pubblici sono come i campi delle struct C, cioè possono essere modificate anche direttamente dal programma.
Ad esempio, se devo fare un programma che mi permetta di gestire un insieme di persone.
Ogin persona ha determinata caratteristiche (peso, età, sesso) ed azioni che può eseguire.
A questo punto creo una classe persona in questo modo:
codice:
class persona {
// Qui tutti i membri privati
// non li posso modificare da main per esempio
int eta;
char sesso;
int peso;
public:
// Tutti i membri pubblici
//Variabile pubblica
float IQ;
//Questa è la funzione costruttore:
//ha lo stesso nome della classe e viene chiamata
//al momento della creazione di un oggetto
persona() {
//Inizializza le variabili
eta=18;
sesso = 'M';
peso = 70;
}
//Overloading del costruttore che accetta dei parametri per inizializzare
persona(int veta, char vsesso, int vpeso) {
//Inizializza con gli argomenti
eta = veta;
peso = vpeso;
//Importante: convalida i dati in entrata
if (vsesso == 'M' || vsesso == 'S') {
sesso = vsesso;
} else {
sesso = 'M';
}
}
//Qui possono esserci tutte le funzioni membro pubbliche.
void presentati() {
cout << "Ho " << eta << " anni, peso " << peso << " chili e sono ";
if(sesso == 'F') {
cout << "una femmina." << endl;
} else {
cout << "un maschio." << endl;
}
}
void imposta_peso(int vpeso) {
peso = vpeso;
}
}; //fine della classe
//funzione main
void main()
{
//Creo un oggetto
persona tizio;
//Creo un oggetto con il cstruttore parametrizzato
persona Gino(40, 'M', 80);
//Questo non lo posso fare:
// tizio.eta=18;
// Gino.peso = 120;
//perchè son membri privati
//Cambio il peso di tizio
tizio.imposta_peso(60);
//Cambio una variabile pubblica
tizio.IQ = 3.0;
Gino.IQ = 8.5;
//Chiamo delle funzioni pubbliche
tizio.presentati();
Gino.presentati();
}