Pagina 1 di 1
Domande sul c++
Inviato: lunedì 18 giugno 2007, 13:17
da sospiro
Ciao a tutti!
come da titolo, volevo rivolgervi un paio di domande sul c++...
prima di tutto che differenza fa dichiarare una funzione dentro al corpo della classe oppure all'esterno, con i doppi due punti per intenderci?
è solo una questione di ordine oppure si dovrebbe scegliere una o l'altra in base a qualcosa?
quando compilo con g++ mi dice questa cosa:
Codice: Seleziona tutto
In file included from /usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../include/c++/4.1.2/backward/iostream.h:31,
from prova.cpp:1:
/usr/lib/gcc/x86_64-linux-gnu/4.1.2/../../../../include/c++/4.1.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
però se metto iostream invece che iostream.h mi dice che cin e cout non sono dichiarate nel contesto del main...
c'è qualche modo a me sconosciuto per utilizzarli??
per ora ho solo questo dubbi :P :P ma probabilmente presto ne avrò altri!!
ciao a tutti!
Re: Domande sul c++
Inviato: lunedì 18 giugno 2007, 14:03
da Uno
sospiro ha scritto:
prima di tutto che differenza fa dichiarare una funzione dentro al corpo della classe oppure all'esterno, con i doppi due punti per intenderci?
è solo una questione di ordine oppure si dovrebbe scegliere una o l'altra in base a qualcosa?
I due punti si chiamano scope, se dichiari una funzione all'interno del corpo della classe allora viene sviluppata inline.
Ovvero tutte le volte che il compilatore trova quella funzione la sostituisce con il proprio codice, mentre normalmente si limiterebbe a scrivere una chiamata ad essa, forse non mi sono spiegato bene, comunque se si agli inizi ti sconsiglio di dichiarare funzioni inline, una sempre lo scope : che migliora anche la leggibilità e la manutenzione del codice.
quando compilo con g++ mi dice questa cosa:
però se metto iostream invece che iostream.h mi dice che cin e cout non sono dichiarate nel contesto del main...
c'è qualche modo a me sconosciuto per utilizzarli??
per ora ho solo questo dubbi :P :P ma probabilmente presto ne avrò altri!!
ciao a tutti!
è che il C++ permette l'overloading degli operatori e gli operatori > di cin e cout sono in conflitto con ciò, basta non usare iostream, usa stdio le funzioni printf, fprintf... per stampare sui file e nella console.
Benvenuto nel C++!

Re: Domande sul c++
Inviato: lunedì 18 giugno 2007, 15:38
da Alepp0
sospiro ha scritto:
però se metto iostream invece che iostream.h mi dice che cin e cout non sono dichiarate nel contesto del main...
c'è qualche modo a me sconosciuto per utilizzarli??
intanto è deprecata da lungo tempo. Poi la cosa più fondamentale: le funzioni cin e cout fanno parte del namespace 'std', per cui se vuoi utilizzarle senza errori o scrivi la direttiva 'using namespace std;' subito dopo gli 'include' oppure quando usi le funzioni le devi usare anteponendo il namespace (così: std::cin ... std::cout). Oppure scrivi 'using std::cin;' al posto del namespace std.
Re: Domande sul c++
Inviato: lunedì 18 giugno 2007, 16:48
da sospiro
Grazie mille per le risposte...
@Alepp0: ho capito il funzionamento..però di preciso cose è un namespace? è praticamente l'equivalente dei pacchetti delle librerie di java?? (come ad esempio java.awt.* , java.util. ...) oppure sono proprio delle classi?
Re: Domande sul c++
Inviato: lunedì 18 giugno 2007, 19:47
da Alepp0
più o meno come i package di Java sì.
Re: Domande sul c++
Inviato: martedì 19 giugno 2007, 9:57
da thelo
[quote="Uno"]
I due punti si chiamano scope, se dichiari una funzione all'interno del corpo della classe allora viene sviluppata inline.
Ovvero tutte le volte che il compilatore trova quella funzione la sostituisce con il proprio codice, mentre normalmente si limiterebbe a scrivere una chiamata ad essa, forse non mi sono spiegato bene, comunque se si agli inizi ti sconsiglio di dichiarare funzioni inline, una sempre lo scope : che migliora anche la leggibilità e la manutenzione del codice.
[quote]
Scusa Uno,
ma se tu dichiari una 'funzione' all'interno di una classe, non stai dichiarando semplicemente un METODO su quella classe?
E per dichiarare funzioni(o metodi) inline non bisogna usare esplicitamente la parola chiave inline?
Re: Domande sul c++
Inviato: martedì 19 giugno 2007, 10:36
da menelicte
thelo ha scritto:
Uno ha scritto:
I due punti si chiamano scope, se dichiari una funzione all'interno del corpo della classe allora viene sviluppata inline.
Ovvero tutte le volte che il compilatore trova quella funzione la sostituisce con il proprio codice, mentre normalmente si limiterebbe a scrivere una chiamata ad essa, forse non mi sono spiegato bene, comunque se si agli inizi ti sconsiglio di dichiarare funzioni inline, una sempre lo scope : che migliora anche la leggibilità e la manutenzione del codice.
Scusa Uno,
ma se tu dichiari una 'funzione' all'interno di una classe, non stai dichiarando semplicemente un METODO su quella classe?
E per dichiarare funzioni(o metodi) inline non bisogna usare esplicitamente la parola chiave inline?
anche io me la ricordavo così