Suppression d'un pointeur vers Const (T const*)
En C , c'est un fait connu que les fonctions membres non const ne peuvent pas être appelé à l'aide d'un pointeur const. Cependant, une exception courante est rencontrée lors de la suppression d'un pointeur vers const, même s'il appelle le destructeur de la classe, qui n'est pas une méthode const. Cette anomalie apparente soulève la question : pourquoi est-ce autorisé ?
La réponse réside dans le soutien à la nécessaire destruction d'objets. Lorsque des objets sont créés dynamiquement, il est essentiel de disposer d'un moyen de les supprimer, même s'ils sont const. Ceci est réalisé en autorisant la suppression des pointeurs const, malgré la restriction sur la modification des objets const.
Le code suivant démontre ce comportement :
<code class="cpp">// dynamically create object that cannot be changed const Foo * f = new Foo; // use const member functions here // delete it delete f;</code>
Un autre exemple montre que ce comportement n'est pas limité aux objets créés dynamiquement :
<code class="cpp">{ const Foo f; // use it } // destructor called here</code>
Si les destructeurs ne pouvaient pas être appelés sur des objets const, cela interdirait entièrement l'utilisation d'objets const. Cette allocation assure la bonne destruction des objets, quel que soit leur statut const.
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!