Clarification des déclarations de pointeurs d'objets multiples
En C , lors de la déclaration de plusieurs pointeurs sur une seule ligne, il est essentiel d'en saisir les nuances. Dans l'exemple fourni, la question se pose concernant les différences entre deux extraits de code apparemment similaires.
Exemple 1 :
<code class="cpp">private: sf::Sprite* re_sprite_hair, re_sprite_body, re_sprite_eyes;</code>
Cette déclaration vise à créer trois pointeurs vers sf::Objets Sprite. Cependant, cela crée faussement un pointeur et deux objets. L'astérisque () qui suit immédiatement sf::Sprite s'applique uniquement à la première variable (re_sprite_hair) et non aux suivantes.
Pour rectifier cela, la déclaration doit être révisée comme suit :
<code class="cpp">private: sf::Sprite* re_sprite_hair, *re_sprite_body, *re_sprite_eyes;</code>
Ici, chaque variable se voit explicitement attribuer un astérisque, créant trois pointeurs distincts.
Exemple 2 :
<code class="cpp">public: Entity() { re_sprite_eyes = new sf::Sprite(); re_sprite_hair = new sf::Sprite(); re_sprite_body = new sf::Sprite(); } private: sf::Sprite* re_sprite_hair; sf::Sprite* re_sprite_body; sf::Sprite* re_sprite_eyes;</code>
Cette version déclare trois pointeurs correctement selon l'usage prévu. Les pointeurs sont correctement initialisés dans le constructeur à l'aide de l'opérateur 'new'.
Conclusion :
Lors de la déclaration de plusieurs pointeurs sur une seule ligne, il est crucial de placer l'astérisque adjacent à chaque variable pour éviter toute confusion et assurer une gestion précise de la mémoire.
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!