c++返回局部对象的引用为什么得到了正确的返回值?

class A {
public :
    int num = 10;
};

vector<int>& get() {
    vector<int> i{ 1,2 };
    return i;
}

A& getA() {
    A a;
    a.num = 8;
    return a;
}

int main()
{
    vector<int> vec(2);
    vec = get();

    std::cout << vec.size() << endl;

    A aa = getA();
    cout << aa.num << endl;
}

为什么输出vec.size()是0? 返回的getA()返回的也是局部变量的引用为什么得到了正确的值

阅读 1.4k
1 个回答

这个未定义行为(Undefined behavior)。
未定义行为什么都可能发生。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题