2013-03-20 20 views
5

So che include è per le classi e l'utilizzo è per alcuni elementi incorporati, come lo spazio dei nomi std ... Quando si include qualcosa, è possibile creare oggetti e giocare con loro, ma quando si "usa" qualcosa, quindi è possibile utilizzare alcune funzioni integrate. Ma allora come dovrei creare la mia "biblioteca" che potrei "usare"?Qual è la differenza tra l'utilizzo e l'inclusione in C++?

+1

entrambi sono per le classi ed entrambi sono per le cose di built-in. – chris

risposta

4

In poche parole #include indica al pre-compilatore di copiare e incollare semplicemente il contenuto del file di intestazione che viene incluso nell'unità di traduzione corrente. Viene valutato dal pre-compilatore.

Mentre using directive indica al compilatore di portare i nomi dei simboli da un altro ambito in ambito corrente. Questo è essenzialmente messo in atto dal compilatore.

Ma allora come dovrei creare la mia "biblioteca" che potrei "usare"?

Gli spazi dei nomi sono utilizzati per evitare conflitti di nomi di simboli. E di solito ogni implementatore di librerie avrà la sua funzionalità racchiusa in uno o più spazi dei nomi.

2

'include' fondamentalmente un copia-incolla il valore di un file nel percorso della riga "include". Questo è usato per rendere il codice sorgente (di solito .c file) a conoscenza di una dichiarazione di altro codice sorgente (solitamente si trova nel file .h).

'usando' fondamentalmente dice al compilatore che nel codice successivo che si sta utilizzando qualcosa (di solito uno spazio dei nomi) in modo da non dovrà farlo in modo esplicito ogni volta:

Invece di:

std::string a; 
std::string b; 
std::string c; 

Si potrebbe scrivere:

using namespace std; 
string a; 
string b; 
string c; 
+1

Si potrebbe, ma non si dovrebbe. 'using namespace std;' vanifica completamente lo scopo dei namespace. Porta spesso a problemi dall'aspetto misterioso. 'std' è lì per un motivo. Usalo. –

+0

Sì, lo so, ma ancora, qual è lo scopo dell'operatore "::" (cosa significa?) In questo caso e anche cosa è std, cosa include apart cout, cin e quel tipo di cose di base ? Come posso inserire alcuni dei miei corsi in questi spazi dei nomi? – user2030383

+2

@ user2030383: '::' è l'operatore di risoluzione dell'ambito che indica al compilatore in quale ambito (* spazio dei nomi/classe/struttura/unione *) è possibile trovare il simbolo particolare. Ci sono molti simboli che fanno parte dello spazio dei nomi 'std',' std' sta per lo spazio dei nomi della libreria * standard *, Dovrai vedere la documentazione per vedere esattamente quali sono tutti i simboli in essa contenuti. Non dovresti mettere le tue classi nello spazio dei nomi 'std', è un comportamento indefinito se lo fai. Invece, dovresti avvolgere le tue classi nel tuo spazio dei nomi. –