• [^] # Re: Donc pour résumer...

    Posté par . En réponse à la dépêche C++17, Genèse d’une version mineure. Évalué à 6.

    la performance et la portabilité ne peuvent pas être les deux seuls critères ; autrement, les gens feraient du C

    C++ est plus performant que C (à code comparable). L’exemple typique est std::sort vs qsort, parce std::sort n’a pas le coût associé au pointeur de fonction. C++ te permet de faire à la compilation des optimisations dont tu ne peux même pas rêver en C.

    On peut utiliser massivement les templates sans utiliser la moindre méthode virtuelle (c’est d’ailleurs à de nombreux endroits le cas dans la STL). Il existe des raisons (pas forcément les meilleures, certes) d’avoir des méthodes virtuelles dans une classe mais un destructeur non virtuel (dans ce cas, il faut théoriquement mettre le destructeur de la classe de base en protégé).

    Le choix par défaut de C++ est celui qui ne coûte pas. Si ton propos est de dire que le compilateur devrait et péter un gros warning quand tu as un destructeur non virtuel public dans une classe ayant une méthode virtuelle, je suis tout à fait d’accord. En revanche, s’il est que tout doit être virtuel par défaut, non. Ce n’est pas l’esprit du langage, il y en a d’autres pour ça. Don’t pay for what you don’t use.

    Mes commentaires sont en wtfpl. Une licence sur les commentaires, sérieux ? o_0