normalement chaque variable a ce qu´on appelle un porté.
int a
void function() {
int a;
}
les deux variables porte le meme non mais ce ne sont pas les meme.
la variable ayant une porté local, le deuxieme, sera utilisé en prorité par rapport a la variable global ( la premiere)
de plus a la fin de ta finction ta variable crée a l´interieur de celle ci sera detruite automatiquement.
a l´inverse si tu fais
void function() {
int * a;
}
cout < < *a;
delete a;
la le a que tu creer sera accessible de partout jusqu´a sa destruction par le delete.
partout, c´est toute le fonction les classes les fichiers...etc, et meme d´autres applications.
mais a condition de connaitre a ( pas *a).
a represente ici l´adresse en memoire de ton objet et *a represente son contenu