Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah Perbezaan Antara `->*` dan `.*` Pengendali Penunjuk-ke-Ahli C?

Apakah Perbezaan Antara `->*` dan `.*` Pengendali Penunjuk-ke-Ahli C?

Linda Hamilton
Linda Hamiltonasal
2024-11-19 04:24:03592semak imbas

What's the Difference Between C  's `->*` dan `.*` Operator Penunjuk kepada Ahli?
*` dan `.*` Operator Penunjuk kepada Ahli? " />

Menyahmistikan Operator Penunjuk kepada Ahli -> dan . dalam C

Walaupun telah meneroka sumber sedia ada, anda mungkin masih bingung dengan enigmatic -> dan . operator dalam C sifat sebenar mereka dan menjelaskan apabila penggunaannya menjadi perlu.

Memahami Tujuan Pengendali Penunjuk kepada Ahli

Kedua-duanya -> dan . ialah pengendali penunjuk kepada ahli yang memudahkan akses tidak langsung kepada fungsi ahli ini pada asasnya bermakna ia membolehkan anda untuk memanggil fungsi ahli melalui penuding dan bukannya terus daripada objek.

Sintaks dan Penggunaan

  • ->: Operator ini digunakan untuk menyahrujuk penunjuk yang menunjuk ke fungsi ahli objek (ptr->member_func_ptr)().
  • .: Sama seperti ->, pengendali ini juga menafikan penunjuk kepada fungsi ahli. Walau bagaimanapun, ia digunakan apabila penunjuk dinyahrujuk melalui penunjuk atau kelas objek. Sintaksnya ialah (object_ptr.*member_func_ptr)().

Bila Gunakan -> vs. .

  • ->*: Gunakan operator ini apabila membatalkan rujukan penuding kepada fungsi ahli melalui penuding kepada objek.
  • .*: Gunakan operator ini apabila merujuk penuding kepada fungsi ahli melalui penuding atau kelas objek.

Contoh

Pertimbangkan kelas X dengan fungsi ahli berikut: f() dan g(). Katakan anda mempunyai penuding yang menunjuk kepada fungsi f():

struct X {
  void f() {}
  void g() {}
};

typedef void (X::*pointer)();
pointer somePointer = &X::f;

Untuk memanggil somePointer menggunakan objek x, anda akan menggunakan:

X x;
(x.*somePointer)(); // Calls x.f()

Jika x bukan objek tetapi penunjuk kepada objek, anda boleh menggunakan fungsi ahli menggunakan ->* seperti berikut:

X* px = new X;
(px->*somePointer)(); // Calls px->f()

Contoh ini menggambarkan bahawa menggunakan ->> atau . adalah penting apabila mengakses fungsi ahli secara tidak langsung melalui penunjuk, terutamanya apabila berurusan dengan objek yang ditunjuk.

Atas ialah kandungan terperinci Apakah Perbezaan Antara `->*` dan `.*` Pengendali Penunjuk-ke-Ahli C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn