|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
[C++] Scope e visibilità di una variabile
Salve,
credevo che lo scope o la visibilità di una variabile fossero la stessa cosa ma il libro che sto leggendo attribuisce due significati differenti ma non riesco a capire. Portata o scope : è l'ambiente (blocco, funzione, modulo o programma completo) ove resta definita una variabile Visibilità : è la proprietà secondo la quale, all'interno del proprio campo di validità, il nome della variabile è visibil, cioè può essere usato. Che diavolo di differenza c'è ? non capisco |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
Quote:
es in java: Codice:
public class Prova {
private String stringa = null;
public Prova(String stringa) {
stringa = "sono il campo stringa della classe Prova o il parametro del costruttore?";
}
}
non so se mi sono spiegato ![]() ps. ah ora ho letto che riguarda c++.. dovrebbe essere la stessa cosa comunque Ultima modifica di k0nt3 : 21-05-2007 alle 12:26. |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Quote:
Codice:
Modulo C
extern T s();
extern T z;
static T f();
static T y;
main()
{
int x=1;
}
T f()
{
static int w=3;
T* a = new T ;
...
...
delete a;
}
Modulo S
T z = valore iniziale;
T s(...) { ... }
la variabile z ha portata nell'intero programma e visibilità nei moduli C e S la variabile y ha portata nell'intero programma e visibilità nel solo modulo C la variabile w ha portata nella funzione f() e visibilità in f() Non riesco a capire ancora la differenza tra visibilità e funzione |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
Quote:
per la variabile z invece è chiaro.. è dichiarata extern in C e poi definita anche in S |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
La cosa strana è che ho sempre assunto lo scope di una variabile come la sua visibilità...
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
ecco googlando ho trovato qualcosa http://www.na.drr.cnr.it/depietro/FUNZIONI_new.pdf
leggi da pag 26! è esattamente ciò che ho detto inizialmente.. l'esempio del tuo libro è un pò oscuro.. tipo alla slide 28 dovresti capire tutto |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
ne approfitto intanto per un'ulteriore delucidazione : l'allocazione dinamica di un tipo T mediante il puntatore a.
Quando lo spazio di memoria puntato da a viene allocato nella funzione f() e questa termina senza il "delete a;" il contenuto di a resta cmq in memoria giusto ? Ciò che si perde è solo il suo puntatore giusto ? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
si se non usi delete la memoria resta allocata, ma perdendo il puntatore non hai più modo di andarla ripescare (è un errore piuttosto comune quando si fanno grossi programmi in c++ o c).
per l'esempio del tuo libro invece credo di aver capito... la variabile y è static e questo comporta che il suo valore viene conservato durante tutta l'esecuzione del programma, anche se ti trovi nel modulo S, solo che è visibile solo quando sei nel modulo C. in pratica nel modulo S la variabile c'è ancora (perchè il suo valore deve essere conservato) ma non è raggiungibile. |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Quote:
|
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7260
|
ma di che libro si tratta?
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
|
Da c++ a uml di carlo savy
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:59.





















