Maison > développement back-end > C++ > En quoi les opérateurs de pointeur vers membre `->*` et `.*` de C diffèrent-ils ?

En quoi les opérateurs de pointeur vers membre `->*` et `.*` de C diffèrent-ils ?

Barbara Streisand
Libérer: 2024-11-28 01:44:10
original
607 Les gens l'ont consulté

How Do C  's `->*` et `.*` Les opérateurs de pointeur vers membre diffèrent ?
*` et `.*` Les opérateurs de pointeur vers membre diffèrent ? " />

Comprendre les opérateurs pointeur vers membre : -> et . en C

Pointeurs vers des membres de classe, désignés par - > et . en C , sont souvent rencontrés lorsque l'on travaille avec des structures de données complexes et orientées objet Ces opérateurs permettent d'accéder indirectement aux fonctions membres et aux données membres d'une classe via un pointeur.

->* et .

Le -> L'opérateur * est utilisé conjointement avec un pointeur vers un objet de classe pour accéder à une fonction membre. L'expression obj->*memberFunction est équivalente à obj.memberFunction(). code suivant :

class MyClass {
public:
    void print() {
        std::cout << "Hello!" << std::endl;
    }
};

int main() {
    MyClass obj;
    void (MyClass::*printFunc)() = &MyClass::print;
    (obj.*printFunc)(); // Calls MyClass::print() using pointer-to-member
}
Copier après la connexion

L'opérateur .*, quant à lui, est utilisé avec un pointeur vers une donnée membre. L'expression obj.*member est équivalente à obj.member. >

struct MyStruct {
    int x;
};

int main() {
    MyStruct s;
    int *xPtr = &s.x;
    int x = (s.*xPtr); // Dereferences the pointer and assigns the value of s.x to x
}
Copier après la connexion

Quand utiliser ->* et .

  • ->: Utilisé lors de l'accès aux fonctions membres ou aux données membres d'un objet via un pointeur vers cet objet.
  • .* : Utilisé lors de l'accès aux fonctions membres ou aux données membres d'un objet via un pointeur vers la classe tapez.

Distinguer ->* de ->

Il est important de noter que ->

est différent de ->. Le -> L'opérateur déréférence simplement un pointeur, tandis que -> déréférence un pointeur puis accède à une fonction membre ou à une donnée membre de l'objet vers lequel il pointe.

Conclusion

Les opérateurs pointeur vers membre en C fournissent un mécanisme puissant pour accéder indirectement aux membres de la classe. Comprendre la différence entre ->

et . est crucial pour une programmation orientée objet efficace.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal