Newsgroup: it.comp.lang.c++
Titolo: Risposta al quesito di Simone Martelli.

La differenza fra una struct ed una class sta nel fatto che nella struct
tutti i dati membro e le funzioni sono pubblici,mentre nella class
possono essere anche private o protected o published.E infatti una
struct non é altro che una classe interamente pubblica,ma per il resto
valgono per essa tutte le regole della programmazione ad oggetti.Di
conseguenza,per inizializzare i dati membro di una struct puoi
benissimo usare un costruttore.
Il Ghenio

possono essere anche private o protected o published.
Sbagliato...
La nelle struct C++ il default e` public (ma puoi usare anche
private e protected), mentre nelle classi il default e` private.
Per inciso mi pare che anche con le struct sia possibile utilizzare
l'ereditarieta` e non mi stupirei che potessi metterci anche
qualche funzione membro virtuale!
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

Diciamo che le struct sono rimaste nel C++ giusto per compatibilita' con il C
ma per il resto sono come le classi (a parte il default a public:)
*Fabio*
-- 
In 1962, you could buy a pair of SHARKSKIN SLACKS, with a "Continental
Belt," for $10.99!!

qualche funzione membro virtuale!
Quanto hai scritto é giusto,benché superfluo.E'infatti vero che anche nelle
struct si possono dichiarare dati membro private o protected,ma normalmente
i dati della struct sono pubblici,e quindi viene utilizzata soprattutto per
creare delle strutture dati accessibili anche all'esterno.
Ad esempio:
class Data
{
public:
    int giorno;
    int mese;
    int anno;
};
In questo caso non ha senso utilizzare una classe,ma é meglio utilizzare una
struct.
struct Data
{
    int giorno;
    int mese;
    int anno;
};
Per il resto(come ho già detto)valgono per la struct tutte le regole della
programmazione ad oggetti,quindi anche l'ereditarietà.
Il Ghenio

ma per il resto sono come le classi (a parte il default a public:)
Infatti...
A prescindere dai motivi per cui in C++ abbiamo ancora le struct, il
mio post voleva mettere in evidenza il fatto che nelle struct non fosse
tutto necessariamente public, ma solo che public era il default.


creare delle strutture dati accessibili anche all'esterno.
La tua affermazione era alquanto diversa, dato che lasciava intendere
che nelle struct tutto era public (mentre e` vero che solo il default
e` public ma e` comunque possibile utilizzare anche gli
altri qualificatori di accesso) e che per il resto si comportavano come
le classi. Ritengo quindi che alla luce di cio` il mio intervento
fosse tutt'altro che superfluo.


 possono essere anche private o protected o published.
Published?
EMG

contenitore come l'object inspector.
Per la precisione mi stavo riferendo a C++Builder,dove la parola
riservata __published serve per rendere visibili(e
contemporaneamente pubblici)nell'Object Inspector i dati membro
di una classe.Ma questo vale solo per le classi derivate da TObject.
Il Ghenio

qualche funzione membro virtuale!
Qualche tempo fa e` transitato su comp.lang.c++.moderated
un reply di B. Stroustrup che affermava che non vi sono differenze
tra i due costrutti, tranne per lo specificatore di visibilita` di default.
Lui stesso, se non sbaglio, in 'C++ Programming Language' consiglia
di usare solo class.
Personalmente, cercando di impostare al meglio le mie gerarchie di classi,
non sento assolutamente bisogno di questo costrutto.
-- 
Roberto Gerola
Email: 
robert...@penguinpowered.com
WWW: 
http://www.penguinpowered.com/~The_Cpp_Compass

non sento assolutamente bisogno di questo costrutto.
Infatti neanche io lo uso, nella OOP l'incapsulazione e` uno dei 
capisaldi e le classi rafforzano tale concetto piu` delle strutture
(per via del default). Credo che "l'uniformita`" nel trattamento delle 
struct e delle classi sia sostanzialmente dovuta a motivi di
semplificazione del compilatore (ma questa e` una opinione
personale, non ho ancora letto "Design & evolution of C++"...
...purtroppo... e non ho idea di cosa dica in merito).
