Cours anonymes

En Java, il est courant d’écrire les éléments suivants (par exemple pour la gestion des événements) afin d’utiliser le modèle de méthode template:

abstract class SomeAbstractClass { public abstract void SomeFunction (); } //... SomeAbstractClass obj = new SomeAbstractClass () { public void SomeFunction () { /* implementation */ } }; 

En C ++, les compilations suivantes sont compilées:

 class SomeAbstractClass { virtual void SomeFunction () = 0; }; // ... SomeAbstractClass * obj = new ( class : public SomeAbstractClass { virtual void SomeFunction () { /* implementation */ } }); 

Pourquoi les gens ne font-ils pas cela habituellement?

Je pense que trois problèmes se produisent avec la classe anonyme

  • Vous ne pouvez pas écrire un constructeur car la classe n’a pas de nom.
  • L’inheritance de la liste d’initialisation n’est pas autorisé.
  • Il est également difficile de saisir la valeur, les variables finales étant uniquement accessibles.