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
Barbara Streisandoriginal
2024-11-28 01:44:10586parcourir

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
}

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
}

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!

Déclaration:
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