Maison >développement back-end >C++ >Au-delà des fonctions membres Const : quelles autres utilisations le mot-clé « mutable » a-t-il en C ?
« mutable » a-t-il des applications plus larges au-delà des membres mutables dans les fonctions membres Const ?
Le mot-clé « mutable » en C permet de modifier les membres de données dans les fonctions membres const. Cependant, certains peuvent se demander s'il a un autre objectif.
En réalité, le mot-clé 'mutable' fait la différence entre les 'const' au niveau du bit et les 'const' logiques. Le « const » logique indique qu'un objet ne change pas visiblement via son interface publique. Cela inclut des scénarios tels que le verrouillage d'un mutex dans une fonction const pour la sécurité des threads, car la modification se produit dans l'état interne de l'objet, non accessible de l'extérieur.
Une autre application met en cache les valeurs calculées et y accède via une fonction membre mutable. Une telle fonction peut récupérer la valeur une fois et la stocker, en conservant une « const » logique tout en permettant des modifications internes.
De plus, C 11 a introduit des lambdas mutables. Ceux-ci permettent de modifier les variables capturées, généralement référencées par valeur. Par exemple :
int x = 0; auto f1 = [=]() mutable {x = 42;}; // OK auto f2 = [=]() {x = 42;}; // Error
Ici, « f2 » échoue car les captures lambda non mutables ne sont pas modifiables. Par conséquent, « mutable » permet non seulement de modifier les membres dans les fonctions membres const, mais s'étend également à la différenciation entre « const » au niveau du bit et logique et facilite la modification des données dans les lambdas mutables.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!