以引用方式返回

Joh*_*tty 3 c++ oop pointers

请参阅以下代码段.在第二个函数中,我将返回一个引用.我在函数中声明一个局部变量并返回地址.由于变量是局部的,我相信它的生命在退出函数时结束.我的问题是,为什么即使原始变量被删除,也可以在没有任何异常的情况下从调用者访问值?

int& b=funcMulRef(20,3);

int* a= funcMul(20,3);


int* funcMul(int x,int y)
{
 int* MulRes = new int;
      *MulRes = (x*y);

 return MulRes;

}

int& funcMulRef(int x,int y)
{
 int MulRes ;
      MulRes = (x*y);

 return MulRes;

}
Run Code Online (Sandbox Code Playgroud)

此致,约翰

Oli*_*rth 7

第二个函数的行为是未定义的 ; 任何事情都可能发生,并且在许多情况下,它似乎会起作用,因为没有任何东西覆盖了结果以前存储在堆栈中的位置.