Rumah >pembangunan bahagian belakang >C++ >Bagaimana Pengendali Penunjuk-ke-Ahli C \'s `->*` dan `.*` Berfungsi?

Bagaimana Pengendali Penunjuk-ke-Ahli C \'s `->*` dan `.*` Berfungsi?

Susan Sarandon
Susan Sarandonasal
2024-11-26 16:35:14838semak imbas

How Do C  's `->*` dan `.*` Pengendali Penunjuk kepada Ahli Berfungsi?
*` dan `.*` Operator Penunjuk kepada Ahli Berfungsi? " />

Memahami Operator Penunjuk kepada Ahli -> dan . dalam C

Walaupun dokumentasi sedia ada, memahami maksud penunjuk -kepada-ahli pengendali -> dan . dalam C boleh sukar difahami. Artikel ini bertujuan untuk menjelaskan fungsinya dan aplikasinya dalam pelbagai senario.

Apakah itu -> dan .?

Penunjuk- operator kepada ahli digunakan untuk mengakses fungsi ahli secara tidak langsung melalui penunjuk atau rujukan kepada objek. -> menyahrujuk penuding fungsi ahli untuk memanggil fungsi ahli objek yang dirujuk . menyahrujuk penuding ahli untuk memanggil fungsi ahli objek runcing.

Bila hendaknya. Gunakan -> dan .?

  • Gunakan ->* apabila anda mempunyai penuding ke objek:
X* px = new X;
pointer somePointer = &X::f;
(px->*somePointer)(); // Calls px->f()
  • Gunakan .* apabila anda mempunyai rujukan kepada objek:
X& rx = x;
pointer somePointer = &X::f;
(rx.*somePointer)(); // Calls rx.f()
  • Jangan gunakan x.somePointer() atau px->somePointer(): Sintaks ini tidak sah kerana ia cuba menghubungi ahli yang tidak wujud fungsi.

Contoh

Pertimbangkan kod berikut:

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

int main()
{
   X x;
   void (X::*pointer)() = &X::f;

   // Call x.f() using .*
   (x.*pointer)();

   X* px = new X;

   // Call px->f() using ->*
   (px->*pointer)();

   return 0;
}

Dalam contoh ini, penunjuk menafikan penunjuk fungsi ahli &X: :f dan berikannya kepada penunjuk. Kemudian, . digunakan pada x untuk memanggil x.f(), dan -> digunakan pada px untuk memanggil px->f().

Dengan memahami perbezaan antara -> ; dan . dan apabila setiap satu sesuai, pembangun boleh mengendalikan penunjuk fungsi ahli dan panggilan fungsi tidak langsung dalam C dengan berkesan .

Atas ialah kandungan terperinci Bagaimana Pengendali Penunjuk-ke-Ahli C \'s `->*` dan `.*` Berfungsi?. 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