#include <iostream>
using namespace std;

class K {
public:
  /*
    q.1 précaution importante de sorte que le type K
    soit polymorphe sur son destructeur
  */
  virtual ~K() { cout << "dtor K" << endl;}
};

class L : public K {
public:
  virtual ~L() { cout << "dtor L" << endl; }
};

/* bug sujet, mais tout le monde a compris !? c'est un tableau de pointeurs */
void supprimer(K *k[],int n) {
  for (int i=0; i<n; i++) {
    delete k[i];
    k[i] = 0;
  }
}

int main() {
  K *tableau[3];
  tableau[0] = new K();
  tableau[1] = new L();
  tableau[2] = new K();

  supprimer(tableau,3);
  return 0;
}