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
Lepaskan: 2024-11-26 16:35:14
asal
923 orang telah melayarinya

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()
Salin selepas log masuk
  • Gunakan .* apabila anda mempunyai rujukan kepada objek:
X& rx = x;
pointer somePointer = &X::f;
(rx.*somePointer)(); // Calls rx.f()
Salin selepas log masuk
  • 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;
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan