Teoretycznie poniższy fragment kodu nie ma sensu, bo zwracamy referencję do obiektu, który jest założony na stosie i przestaje istnieć:
#include <iostream>
using namespace std;
int& funRef()
{
int k = 1;
int &ref = k;
return ref;
}
void main()
{
cout<<endl;
int &ref = funRef();
cout<<ref;
cout<<endl;
system("pause");
}
Jednak program w vs 2010 uruchamia się i wyświetla wynik: 1. Proszę o wytłumaczenie. Zastanawiam się też czy w przypadku powyższej funkcji zapis:
int k = 1;
int &ref = k;
return ref;
jest równoważny poniższemu:
return k;