I have this code:-
int i;
class A
{
public:
    ~A()
    {
        i = 10;
    }
};
int& foo()
{
    i = 3;
    A ob;
    return i;
}
int main()
{
    cout << "i = " << foo() << endl;
    return 0;
}
The output is 10, as the destructor updates the value of foo() i.e i. My question is, shouldnt foo() not exist anymore since the function is out of scope ? Or is foo i.e the return value stored somewhere in memory ? If so then how long is it stored ? I want to know the actions the compiler does in order.
Thankyou.
Aucun commentaire:
Enregistrer un commentaire