salut,
mettre le mot clé const apres les signatures de fonction a t'il une influence sur les performances et/ou est-ce juste un moyen de forcer la fonction a ne pas modifier les membres ?
salut,
mettre le mot clé const apres les signatures de fonction a t'il une influence sur les performances et/ou est-ce juste un moyen de forcer la fonction a ne pas modifier les membres ?
Quelqu'un rectifiera si je me trompe mais je crois que c'est une indication de plus pour le compilateur qui peut ainsi parfois optimiser le code généré.
Bonjour,
d'aprés le gotw #81, la const conformité n'apporte rien au niveau des performances, sauf cas exceptionnels que je n'ai pas compris.
En revanche, je pense qu'il est trés utile de conserver la const conformité pour des raisons sémantiques. Lorsqu'un code est const conforme, on peut appréhender directement diverses informations sur une fonction en regardant uniquement sa signature.
Enfin, pour l'optimisation, mieux vaut chercher du côté du passage par référence et, plus généralement, éviter les copies inutiles (attention aux copies cachées), que du côté de la const conformité.
Je plussoie rOd, et j'ai ouië dire, sur ce forum, que le compilateur pouvait effectuer des optimisations lorsqu'il croisait une fonction const sur son chemin...
Donc bonne pratique de programmtion + clarté dans le code + efficacité...
ES qu'un compilo pourrai remplacer
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part void func(const Maclass a)
???
Code : Sélectionner tout - Visualiser dans une fenêtre à part void func(Maclass & a)
comme "a" est const, il ne sera pas modifié et donc pas besoin de faire une copie
Non, pour plein de raisons. D'une part un objet const peut être modifié (s'il a des membres déclarés mutable), ou s'il est const_casté. D'autre part, une copie ne peut pas toujours être éliminée trivialement, elle peut avoir des effets de bords. Et il y a certainement d'autres raisons auxquelles je ne pense pas.
Tu as lu le GOTW donné en lien un peu plus haut par r0d ? Il y a pas mal d'explications.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Partager