一个月可能改两次 2020-07-10 23:03 采纳率: 33.3%
浏览 141
已采纳

C++返回局部变量引用,却没有得到乱码

class Ctest
{
    int m_a;
    int b;
public:
    Ctest(){}
    Ctest(int a,int b):m_a(a),b(b){}
    ~Ctest(){
        cout <<this->m_a <<"销毁局部变量" << endl;
    }
    int geta(){ return m_a; }
    friend ostream &operator<< (ostream &out, const Ctest &ts)
    {
        out << ts.m_a <<"----"<< ts.b << endl;
        return out;
    }
    int t(){ return m_a; }
    Ctest &operator+(const Ctest &a)
    {
        Ctest temp;
        temp.m_a= this->m_a + a.m_a;
        return temp;
    }
    /*friend Ctest &operator+(const Ctest &a,const Ctest &b)
    {
        Ctest temp;
        temp.m_a = b.m_a + a.m_a;
        return temp;
    }*/
};

main

    Ctest a(222, 2), b(333, 3), c;
    c = a + b;
    cout << "c:" << c << endl;//c=555
    cout << a.geta() << endl;//a=222
    cout << c << endl;//c=555

为什么我重载+号运算符,返回一个局部变量的引用,却还是得到了正常的得数?不是局部变量销毁后,地址内的内容被删除,就应该乱码吗?

  • 写回答

1条回答 默认 最新

  • 日不落的希望 2020-07-11 10:50
    关注

    //你好,是有可能返回正确答案的。
    //因为销毁需要时间的,在这个时间之前还是有可能获取到正确数值的(虽然时间是极短的);
    //你可以在调用函数后加个sleep再尝试一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?