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

aコンパイラは警告を表示する場合がありますが、オブジェクトがスコープの最後に存在しなくなるため、新しく作成されたオブジェクトには間違いなくぶら下がっている無効な参照が含まれていますfoo

于 2012-06-15T20:58:00.480 に答える