Je sais que vous pouvez utiliser const_cast
pour convertir un const
en un non-const
.
Mais que devez-vous utiliser si vous voulez convertir un non-const
en const
?
Je sais que vous pouvez utiliser const_cast
pour convertir un const
en un non-const
.
Mais que devez-vous utiliser si vous voulez convertir un non-const
en const
?
const_cast
peut être utilisé pour enlever ou ajouter de la constance à un objet. Cela peut être utile lorsque vous voulez appeler une surcharge spécifique.
Exemple artificiel :
class foo {
int i;
public:
foo(int i) : i(i) { }
int bar() const {
return i;
}
int bar() { // pas const
i++;
return const_cast(this)->bar();
}
};
STL depuis C++17 fournit maintenant std::as_const
pour exactement ce cas.
Voir: http://en.cppreference.com/w/cpp/utility/as_const
Utilisation:
CallFunc( as_const(variable) );
Au lieu de:
CallFunc( const_cast(variable) );
Vous n'avez pas besoin de const_cast
pour ajouter de la const
ance :
class C;
C c;
C const& const_c = c;
Veuillez lire cette question et réponse pour plus de détails.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.