>>506
設計がおかしい。それだとまともにコピーできない。

class A {
  int *p;
  std::size_t size;
  public:
  A(int i = 0) : p(new int[i]) {}
  ~A() {delete []p;}
  A &operator=(const A &ca) {
    idelete []p; p = new int[ca.size]; std::copy(ca.p, ca.p+ca.size, p); return *this;
  }
  void Init(int i = 0) {*this = A(i);}
};

これで(例外安全は別にして)問題ないはずだが?