请看下面的代码片段。在第二个函数中,我返回一个引用。我在函数中声明了一个局部变量并返回了地址。由于变量是本地变量,我相信它的生命在退出函数时结束。我的问题是为什么即使删除了原始变量也可以毫无异常(exception)地从调用者访问值?
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;
}
问候, 约翰
最佳答案
第二个函数的行为只是未定义;任何事情都可能发生,并且在许多情况下,它似乎可以正常工作,只是因为没有任何内容被覆盖用于存储在堆栈中的结果。
关于c++ - 按引用返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4701196/