Domande sul c++

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
sospiro
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 521
Iscrizione: lunedì 24 aprile 2006, 21:57
Contatti:

Domande sul c++

Messaggio 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!
[url=http://"spidblog.altervista.org"]Il mio blog[/url]
Avatar utente
Uno
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 412
Iscrizione: sabato 3 marzo 2007, 21:47
Contatti:

Re: Domande sul c++

Messaggio 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++! ;D
porco diodo...
Alepp0
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 351
Iscrizione: martedì 20 febbraio 2007, 14:26

Re: Domande sul c++

Messaggio 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.
Summum jus, summa injuria.
sospiro
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 521
Iscrizione: lunedì 24 aprile 2006, 21:57
Contatti:

Re: Domande sul c++

Messaggio 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?
[url=http://"spidblog.altervista.org"]Il mio blog[/url]
Alepp0
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 351
Iscrizione: martedì 20 febbraio 2007, 14:26

Re: Domande sul c++

Messaggio da Alepp0 »

più o meno come i package di Java sì.
Summum jus, summa injuria.
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Domande sul c++

Messaggio 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?
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
Avatar utente
menelicte
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 596
Iscrizione: lunedì 4 giugno 2007, 0:04

Re: Domande sul c++

Messaggio 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ì
"Tentare è il primo passo verso il fallimento" Homer J.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti