c++ - 按引用返回

标签 c++ pointers oop

请看下面的代码片段。在第二个函数中,我返回一个引用。我在函数中声明了一个局部变量并返回了地址。由于变量是本地变量,我相信它的生命在退出函数时结束。我的问题是为什么即使删除了原始变量也可以毫无异常(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/

相关文章:

c++ - 如何让一个类(class)有两个名字?

C memcpy 交换二维数组的行

c++ - 为什么OO概念接口(interface)在C++中不用关键字来表示?

c - OOP 和 C 中的接口(interface)

c++ - 在 C++ 中使用 STL 从上到下然后从左到右对 Vector<Points> 进行排序

c++ - 我怎样才能优化它以有效的方式运行?

c++ - 为什么这行不通; opencv Mat_<float>

C++ 指针到指针的抽象基类数组

c - 在 C 中创建字符串并将其传递给函数的最佳方法?

ios - 从 Objective C 中的父类(super class)初始化子类