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

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 02:50
    关注

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

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

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部