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

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

Linda Hamilton
Lepaskan: 2024-11-19 04:24:03
asal
618 orang telah melayarinya

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;
Salin selepas log masuk

Untuk memanggil somePointer menggunakan objek x, anda akan menggunakan:

X x;
(x.*somePointer)(); // Calls x.f()
Salin selepas log masuk

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()
Salin selepas log masuk

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!

sumber:php.cn
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