Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Differenze tra Struct e Class
Forum - C/C++ - Differenze tra Struct e Class

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
osharko (Normal User)
Pro


Messaggi: 124
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 11:58
Sabato, 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 :)

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:59
Sabato, 16/04/2011
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
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 13:15
Sabato, 16/04/2011
Testo quotato

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.

Testo quotato


- 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.

Testo quotato


-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.

Testo quotato


E altre ancora.



ad esempio?

PM
Avatar
osharko (Normal User)
Pro


Messaggi: 124
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 13:35
Sabato, 16/04/2011
Testo quotato

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
PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:38
Sabato, 16/04/2011
Testo quotato

Postato originariamente da HeDo:
in realtà una struct fa tutto ciò che fa una classe, a parte ereditarietà e polimorfismo.


Che non sono poco.

Testo quotato

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

Testo quotato

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

Testo quotato

Postato originariamente da HeDo:
ad esempio?


le strutture non supportano, che io sappia, costruttori e distruttori


Testo quotato

Postato originariamente da osharko:

Testo quotato

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


Non finirlo nemmeno. Rota scrive dei libri incompleti e pessimi. Se vuoi un consiglio, sostituiscilo con uno dei libri d'introdzione consigliati qui: http://public-inheritance.blogspot.com/2011/04/guida-perco ...
Io ho usato "C++ primer plus" di Stephen Prata, e mi è piaciuto moltissimo

Ultima modifica effettuata da il 16/04/2011 alle 13:41
PM
Avatar
osharko (Normal User)
Pro


Messaggi: 124
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 13:41
Sabato, 16/04/2011
Testo quotato


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

PM
Avatar
osharko (Normal User)
Pro


Messaggi: 124
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 13:43
Sabato, 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

PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 14:05
Sabato, 16/04/2011
Testo quotato

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.

Testo quotato


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.

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 14:17
Sabato, 16/04/2011
Testo quotato

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)


Testo quotato

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???

PM
Pagine: [ 1 2 ] Precedente | Prossimo