0

下面的代码安全吗?

class B {
  public:
    int& b;
    B (int& _b) :
      b(_b) {}
};

B* foo() {
  int a;
  return new B(a);
}

foo 返回的对象中的引用会指向任何内容(因为 int a 超出范围)还是编译会解决这个问题?

4

1 回答 1

5

编译器可能会警告您,但新创建的对象肯定包含一个悬空的无效引用,因为该对象afoo.

于 2012-06-15T20:58:00.480 回答