Buonasera, ho sempre pensato che le variabili che una funzione riceve come parametro fossero variabili locali e che quindi fossero distrutte all'uscita dalla funzione, invece nel seguente codice
#include <iostream>
using namespace std;
class Prova {
public:
Prova(int y) {
p = &y;
};
int get() {
return *p;
};
private:
int* p;
};
int main(int argc, char** argv) {
int x = 12;
Prova pr(x);
cout << pr.get() << endl;
return 0;
}
la cout stampa 12. Com'è possibile? La copia di x passata al costruttore non dovrebbe venire distrutta all'uscita del costruttore stesso quando il suo stack frame viene deallocato?
Grazie