Quel est le but de l' __cxa_pures_virtuel?

Tandis que la compilation avec avr-gcc, j'ai rencontré l'éditeur de liens erreurs telles que les suivantes:

undefined reference to `__cxa_pure_virtual'

J'ai trouvé ce document qui stipule:

La __cxa_pure_virtual fonction est un gestionnaire d'erreur, qui est appelée lorsqu'une fonction virtuelle pure est appelée.

Si vous écrivez une application C++ qui a des fonctions virtuelles pures, vous devez fournir votre propre __cxa_pure_virtual fonction du gestionnaire d'erreurs. Par exemple:

extern "C" void __cxa_pure_virtual() { while (1); }

La définition de cette fonction, comme l'a suggéré corrige les erreurs, mais j'aimerais savoir:

  • quel est le but de cette fonction est,
  • pourquoi j'ai besoin de le définir moi-même et
  • pourquoi il est acceptable de code comme une boucle infinie?
  • Vous pouvez obtenir cette erreur lors de l'utilisation de la gcc de commande où vous devriez être en utilisant g++; je l'ai fait au moins une fois 🙂