Почему виртуальная функция не может быть нереализована при выделении с 'новым'?

struct A
{
  virtual void foo();  // unused and unimplemented
  virtual void bar () {}
};

int main ()
{
  A obj;        // ok
  obj.bar();  // <-- added this edition
  A* pm = (A*)malloc(sizeof(A)); // ok
  A* pn = new A; // linker error
}

Для объектов в стеке работает нормально . Но для размещения в куче с new (не malloc ), он выдает ошибку компоновщика:

undefined reference to `vtable for A'
8
задан iammilind 4 June 2011 в 02:15
поделиться