*` 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 .
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!