Les partenaires publicitaires:

Comment utiliser le pointeur «this» en c ++

Dans un programme C ++, si vous créez un objet de la classe X, vous pouvez alors obtenir l'adresse de A en utilisant le "cette" pointeur. L'adresse est disponible comme une variable locale dans les fonctions membres non statiques de X, et son type est const X *. Le "cette" pointeur fonctionne parce que C ++ crée des instances de ses membres de données, et il conserve une copie de chaque fonction de membre.

Choses que vous devez

  • L'habileté avancée C
  • Compilateur C ++ avec l'IDE, tels que Visual Studio 2008

Instructions



  1. Utilisez le "cette" pointeur pour découvrir l'emplacement d'une instance de classe. Comme tout pointeur, il stocke une adresse. fonction de membre GetAddress () de classe C ++ X renvoie l'adresse d'une instance donnée de la classe X:

    class X {

    publique:

    X * const GetAddress () const {

    retourner this-

    } -




  2. fonctions membres d'accès ou des données de membres à l'intérieur d'une fonction de membre de la classe avec le "cette" mot clé et le "-gt;" opérateur. L'exemple ci-dessous peut fonctionner sans "ce gt ;.-" Mais si la bibliothèque de matrice a une classe parente avec les mêmes noms de membre, "ce-gt;" indique clairement que ce qui est invoqué appartient à la classe actuelle, et non pas son parent:

    Matrice classe {

    rangées int, cols-

    publique:

    Matrice (): lignes (0), cols (0) {

    ce-gt; Init () -

    }

    Matrice ~ () -

    int GetRows () const {

    retourner ce-gt; rows-

    }

    privé:

    vide Init () -

    } -

  3. Étudier une classe qui a la surcharge d'opérateur et d'étudier l'utilisation de ce. L'extrait de code suivant montre comment il peut être redéfini:

    const X *-ce gt; opérateur () {

    retourner this-

    }

Conseils & Avertissements

  • Gardez ces règles à l'esprit lorsque l'on travaille avec un pointeur: ne pas essayer de changer addresses- ils sont unmodifiable- ne comprennent pas les adresses à chaque fois que la taille d'un objet est calculated- vous ne pouvez pas accéder à une adresse à partir de fonctions membres statiques.
» » » » Comment utiliser le pointeur «this» en c ++