Newsgroup: it.comp.lang.c++
Titolo: Ma allora ...

... ok posso aver fede sul fatto che le cose da un anno a questa parte sono
cambiate, ma  ... allora mi chiedo questo: ho visto il Thinking e altri
tutorial, che invece di class usano lo struct! Ma che fine ha fatto class?
esiste ancora o adesso si usa solo struct? Che differenza c'č?

E' buffo come la stessa domanda emerga completamente in posti
completamente diversi (l'ho appena letta in una mailing list).
Le classi si usano eccome. In C++ le uniche differenze tra class e
struct sono che a meno di specifica esplicita i membri della prima sono
privati cosi' come l'eredita', mentre per la seconda sono pubblici;
cioe;
class C : A { 
  int a; 
}; 
equivale a 
struct C : private A { 
  private: 
    int a; 
};
mentre 
struct D : A {
  int a;
};
equivale a
class D : public A {
  public:
    int a;
};
Ciao,
Nicola


Ciao,
la sola differenza e´ nel fatto che mentre per struct l´accesso per default
ai dati e ai metodi e´ pubblico, per la classe l´accesso di default e´
privato.
Ovviamente se si scrivono esplicitamente le parole chiave public, private e
protected, non vi e´ alcuna differenza.
MaurusAP

Le classi si usano eccome.
Domanda che mi sono sempre fatto: perchè una nuova Keyword 'class' se
è praticamente un alias di 'struct'? Solo perche la parola 'class' è
più OO? ^__^
Luc.
 

Me lo sono domandato pure io ieri sera dopo aver letto le risposte!! Serviva
complicare le cose in questo modo?
"Luc" <TOGL...@katamail.com-TOGLI> ha scritto nel messaggio
news:h8qqctc0b6t2sf3aj...@4ax.com...


più OO? ^__^
da quanto dice Stroustrup (10.2.8) direi di si: "...in genere si
preferisce utilizzare struct per le classi che hanno solo dati
pubblici. Tali classi, infatti, 'non sono veri e propri tipi, ma solo
strutture dati' ".
Anto
--
Antonio Cuni, 18 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

 strutture dati' ".
Piu' precisamente se avessero dovuto usare una sola KW, allora avrebbe avuto la
semantica di class. Ovvero private per default. La struct sopravvive per
compatibilita' all'indietro con il C. Dal punto di vista C++ non e' class che e'
un nuovo alias di struct. E' struct che e' un vecchio alias di class.
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

un nuovo alias di struct. E' struct che e' un vecchio alias di class.
Si, ma io non scriverň mai
class punto
{
  float x;
  float y;
};
bensi 'struct'... anche se aggiungessi costruttore, lettura e
scrittura (molto probabilmente inline).
Nel caso in cui i metodi siano di piů e piů complessi allora andrei di
'class'.
Luc.

 scrittura (molto probabilmente inline).
Appunto per questo non hanno sostituito class a struct ma l'hanno semplicemente
aggiunto!
--


aggiunto!
Certo, ma se la keyword 'class' non fosse esistita il C++ sarebbe
comunque esistito.... ^______^
Luc.
PS: stiamo parlando di aria fritta... 8)

Secondo me il problema si e' posto in modo leggermente diverso: ai
primordi B.S. ha prelevato il concetto di classe da Simula 67,
introducendo nel C un costrutto che permetteva accorpamento di dati e
funzioni, specifica dell'accesso e ereditarieta', e ragionevolmente ha
chiamato questo costrutto in modo diverso da quelli esistenti, visto che
diverso lo era per davvero. 
Poi si e' posto il problema di come definire in modo ragionevole il
significato di "struct" in C++, in modo che fosse compatibile con il suo
significato in C. A questo punto, piuttosto che avere due concetti
troppo simili, li ha resi identici, fatta salva la differenza nei
default di accesso, che ha permesso di mantenere la compatibilita'.
Ciao,
Nicola
-- 
Posted from 
mail.divalsim.it
 [194.185.113.194] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 default di accesso, che ha permesso di mantenere la compatibilita'.
Appunto. Proprio per questo dicevo che, se non fosse per il fatto che C++ vuole
essere il piu' compatibile possibile con C, ci sarebbe stata la sola class
(senza struct) piuttosto che viceversa. Ovvero non e' class a essere un nuovo
modo di vedere la struct ma semmai la struct ad essere un vecchio modo di vedere
la class.
