|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#101 | ||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Mia figlia non ha la benché minima conoscenza dei metodi "dispose" perché non sa programmare, ma ha già ben presente il concetto di accesso e rilascio di una risorsa. Quote:
Questo, se non ricordo male, l'ha anche riportato nel libro che ha scritto sul linguaggio. L'uso di strutture SENZA utilizzare alcuna caratteristica peculiare del C++ NON deve generare alcun codice addizionale / penalizzante. Se si verifica, è il compilatore che è scritto male. Ad esempio, prendiamo questo codice: Codice:
struct sPunto
{
int x, y;
};
class cPunto
{
public:
int x, y;
};
struct sPunto s;
s.x = 320;
s.y = 256;
cPunto c;
c.x = 320;
c.y = 256;
Quote:
Codice:
with open('myfile') as f:
for ch in f.read()
Quote:
Quindi in teoria potresti benissimo usare sempre e soltanto le struct per dichiarare classi e programmare a oggetti. Stroustrup introdusse la keyword class per marcare la differenza col "passato"; inizialmente il suo obiettivo era di aggiungere il minimo indispensabile al linguaggio C per supportare nuove funzionalità, e quindi sfruttò la keyword struct per introdurre l'uso delle classi, e ciò rimase nel linguaggio. IMHO avrebbe fatto meglio a lasciare le struct come sono in C, e permettere di usare le innovazioni delle classi con la keyword class.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||||
|
|
|
|
|
#102 | ||||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quote:
Codice:
struct Prova
{
int p;
Prova() { cout << "costruttore Prova" << endl; }
~Prova() { cout << "distruttore Prova" << endl; }
Prova * Get() { return this; }
};
Ah e prova a mettere int p = 0; nella struct e leggi il bellissimo messaggio di errore che viene fuori: Quote:
Quote:
E se ti arriva una eccezione il file rimane aperto. Codice:
string towrite = null;
StreamWriter sw = new StreamWriter("myfile.txt",true);
sw.Write(towrite);
|
||||
|
|
|
|
|
#103 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Nessuna, o meglio una sola, le struct di default hanno membri public mentre le classi hanno membri privati, tanto che qualcuno usa costantemente solo struct. Un effetto del voler introdurre una keyword piu' comprensibile e di dover rimanere compatibili col C.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#104 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
Quote:
|
|
|
|
|
|
|
#105 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
|
#106 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#107 | ||||
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
, il bisogno di mantenere la struct era nato dalla volonta' di far si' che il codice C fosse il piu' possibile leggibile come codice C++, non il contrario.Quote:
Quote:
Quote:
Certo che se si parte dall'idea che deve sembrare il piu' possibile al C++ oppure che non si puo' implementare perche' altrimenti il linguaggio diventa troppo complesso i risultati sono quelli che sono...
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
||||
|
|
|
|
|
#108 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
|
#109 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#110 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
in realtà il concetto di friend function serve a sopperire alla mancanza del concetto di package.. hanno usato il mezzo sbagliato per risolvere il problema giusto IMHO
il tutto sempre per massimizzare il numero di porcherie ammissibili
|
|
|
|
|
|
#111 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Boh, son solo due keywords praticamente identiche per cui non parlerei di porcheria. Diciamo allo stesso livello di poter omettere "int" quando si parla di short o long. O meno peggio del non sapere se "char" e' uguale a "unsigned char" o "signed char".
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#112 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#113 | ||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Il resto, visto che ha una testa e le funziona pure bene, deve imparare a farlo da sola. Quote:
Il codice C e l'esempio giusto è quello che ho postato prima, con la struct prima e la class poi. Ovviamente in C può andare soltanto la parte relativa alla struct. A me premeva far notare che l'uso, in C++, di una struct nella STESSA maniera in cui si farebbe in C non comporta NESSUN overhead, e che lo stesso vale per la dichiarazione di una classe che, anche questa, non aggiunge nulla a ciò che farebbe un'equivalente struct in C. Sul resto concordo con quel che ha scritto Marco. Quote:
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:48.












, il bisogno di mantenere la struct era nato dalla volonta' di far si' che il codice C fosse il piu' possibile leggibile come codice C++, non il contrario.








