LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

class A {
public:
  virtual void ff()=0; ///абстрактный метод

  void stub(){
    ff(); ///тут вызывается ff()
  }
  
  virtual ~A(){
    stub(); ///тут косвенно вызывается ff. компилятор этого не видит
 }
};

class B: public A {
public:
 void ff() override {}; ///реализуем ff
};

вот при деструкции B будет вызван абстрактный метод ff от A, поскольку он вызывается в деструкторе A.

Исходная версия alysnix, :

class A {
public:
  virtual void ff()=0;

  void stub(){
    ff(); ///тут вызывается ff()
  }
  
  virtual ~A(){
    stub(); ///тут косвенно вызывается ff. компилятор этого не видит
 }
};

class B: public A {
public:
 void ff() override {};
};

вот при деструкции B будет вызван абстрактный метод ff от A