Oui, elle permet d'assurer les deux directement, mais la solution proposé par Laurent assure aussi les deux. Alors oui, 1 ca parait plus simple que 2, mais la différence de travail au moment d'écrire les classes n'est quand même pas flagrante au point d'invoquer un argument de simplicité :
Code:
1 2 3 4 5 6 7
|
struct A
{ virtual ~A() =0; };
A::~A() {}
struct B
{ virtual ~B() {} protected: B() {} }; |
(7 caratères de plus écrit comme ca)
Au début je croyais qu'un constructeur en protected n'interdisait pas totalement la création, mais je me suis rendu compte que si. Du coup je ne voit pas trop les différence entre les deux méthodes, à part une pseudo-simplicité, et le fait que la seconde oblige de définir un constructeur.