osharko (Normal User)
Pro
Messaggi: 124
Iscritto: 16/04/2011
|
Questo topic è stato chiuso dal moderatore Salve oggi stavo studiando le Class e ho visto che sono estremamente simili alle Struct e non sono riuscito a capire la differenza tra le due inquanto entrambe consentono di dichiarare variabili del loro tipo; e non ho ben capito a cosa serve il comando public. Attendo risposte
|
|
()
Newbie
Messaggi:
Iscritto:
|
Le classi sono simili alle strutture, è vero, ma hanno varie caratteristiche che le rendono molto più versatili delle strutture:
- hanno vari livelli di protezione dei dati ( la keyword public ne indica uno, quello per cui i dati sono modificabili da qualunque funzione, anche esterna alla classe)
-possono gestire un numero praticamente infinito di tipi, perchè possono essere dichiarate come classi template (proprio a questa possibilità ho dedicato il mio nickname ). Ciò comporta anche che possano contenere funzioni template o di tipo generico, il cui tipo specifico viene assegnato alla dichiarazione di una variabile specializzata appartenente alla classe in questione
-supportano i tre precetti base dell'OOP: ereditarietà (puoi costruire classi derivate da altre classi), polimorfismo (le classi template ne sono un esempio), incapsulamento (cioè protezione dei dati, vedi sopra)
E altre ancora. A proposito: su che libro stai studiando???
Ultima modifica effettuata da il 16/04/2011 alle 13:00 |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da Template:
Le classi sono simili alle strutture, è vero, ma hanno varie caratteristiche che le rendono molto più versatili delle strutture:
|
in realtà una struct fa tutto ciò che fa una classe, a parte ereditarietà e polimorfismo.
- hanno vari livelli di protezione dei dati ( la keyword public ne indica uno, quello per cui i dati sono modificabili da qualunque funzione, anche esterna alla classe)
|
non è vero, l'unica differenza è che di default (senza alcun modificatore) i campi di una struct sono pubblici mentre quelli dei una class sono privati.
-supportano i tre precetti base dell'OOP: ereditarietà (puoi costruire classi derivate da altre classi), polimorfismo (le classi template ne sono un esempio), incapsulamento (cioè protezione dei dati, vedi sopra)
|
*concetti
in realtà il polimorfismo è dato principalmente dall'override delle funzioni delle classi base, i template vengono anch'essi indicati come polimorfismo ma di certo non è la prima cosa che ti viene in mente.
|
|
osharko (Normal User)
Pro
Messaggi: 124
Iscritto: 16/04/2011
|
Postato originariamente da Template:
E altre ancora. A proposito: su che libro stai studiando??? |
Manuale di C++
HOEPLI
Cesare Rota
non è proprio un gran libro, è il mio primo quindi credo vada bene così, ma dopo questo intedo comprarne uno decisamente migliore
Comunque grazie ad entrambi
p.s. public diciamo che lo rende non protetto, ma per renderlo protetto qual'è il comando? Ultima modifica effettuata da osharko il 16/04/2011 alle 13:36 |
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da HeDo:
in realtà una struct fa tutto ciò che fa una classe, a parte ereditarietà e polimorfismo.
|
Che non sono poco.
Postato originariamente da HeDo:
non è vero, l'unica differenza è che di default (senza alcun modificatore) i campi di una struct sono pubblici mentre quelli dei una class sono privati.
|
Non mi pare che le struct supportino funzioni/classi/membri friend o protected
Postato originariamente da HeDo:
*concetti
in realtà il polimorfismo è dato principalmente dall'override delle funzioni delle classi base, i template vengono anch'essi indicati come polimorfismo ma di certo non è la prima cosa che ti viene in mente.
|
*Concetti, hai ragione.
Per l'esempio delle classi template, l'ho scelto perchè ne avevo gia "parlato" sopra
Postato originariamente da HeDo:
ad esempio?
|
le strutture non supportano, che io sappia, costruttori e distruttori
Postato originariamente da osharko:
Postato originariamente da Template:
E altre ancora. A proposito: su che libro stai studiando??? |
Manuale di C++
HOEPLI
Cesare Rota
non è proprio un gran libro, è il mio primo quindi credo vada bene così, ma dopo questo intedo comprarne uno decisamente migliore
|
Ultima modifica effettuata da il 16/04/2011 alle 13:41 |
|
osharko (Normal User)
Pro
Messaggi: 124
Iscritto: 16/04/2011
|
le strutture non supportano, che io sappia, costruttori e distruttori |
Costruttori e Distruttori?
non so se deve farmi paura più il nome o la teoria che c'è dietro o.O |
|
osharko (Normal User)
Pro
Messaggi: 124
Iscritto: 16/04/2011
|
è in italiano? e poi a quanto pare per questa settimanac'è l'offerta del 25% però ho comprato qualche settimana fa un libro di html credo che debba aspettare 1 po per un altro libro
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da Template:
Non mi pare che le struct supportino funzioni/classi/membri friend o protected
|
vero, friend è stato introdotto in C++, e protected non c'è semplicemente perchè non è possibile ereditare una struct.
le strutture non supportano, che io sappia, costruttori e distruttori
|
e sai male, perchè una struct può avere costruttori e distruttori esattamente come una classe, l'unica sottigliezza è che le strutture hanno il costruttore di default (senza parametri) dichiarato implicitamente.
|
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da osharko:
è in italiano? e poi a quanto pare per questa settimanac'è l'offerta del 25% però ho comprato qualche settimana fa un libro di html credo che debba aspettare 1 po per un altro libro |
A quale libro ti riferisci?? Se è "C++ primer plus", mi dispiace deluderti: esiste solo in inglese (o, almeno, non sono riuscito a trovarlo in alcuna lingua se non l'inglese)
Postato originariamente da HeDo:
e sai male, perchè una struct può avere costruttori e distruttori esattamente come una classe, l'unica sottigliezza è che le strutture hanno il costruttore di default (senza parametri) dichiarato implicitamente
|
A questo punto, HeDo, mi hai fatto venire un dubbio: le strutture supportano il puntatore this, i prototype explicit e l'operator overloading??? |
|