Memahami Penunjuk Fungsi Terlebih Beban
Dalam C, fungsi terlampau beban boleh menimbulkan kesamaran apabila bekerja dengan penunjuk fungsi. Kekaburan ini berlaku kerana pengkompil tidak boleh secara automatik menentukan beban lampau yang harus digunakan apabila dibentangkan dengan pengisytiharan penuding fungsi. Untuk menjelaskan penetapan ini dan menentukan beban berlebihan yang dimaksudkan, beberapa kaedah boleh digunakan.
Penyelesaian 1: Menggunakan static_cast<>()
Satu pendekatan ialah menggunakan static_cast<>() operator cast. Operator ini membenarkan anda menghantar penuding fungsi secara eksplisit ke tandatangan beban yang diingini. Sebagai contoh, dalam kod di bawah, penuding fungsi dibuang ke beban lampau yang menerima hujah aksara:
std::for_each(s.begin(), s.end(), static_cast<void (*)(char)>(&f));
Penyelesaian 2: Pengisytiharan Penunjuk Fungsi
Sebagai alternatif , anda boleh menggunakan pengisytiharan penuding fungsi untuk menentukan beban berlebihan yang dimaksudkan. Pengkompil kemudiannya akan membuat kesimpulan lebihan beban yang sesuai berdasarkan pengisytiharan. Contohnya:
void (*fpc)(char) = &f; std::for_each(s.begin(), s.end(), fpc); // Uses the void f(char c); overload
Pertimbangan Fungsi Ahli
Jika fungsi terlebih beban ialah fungsi ahli, anda perlu menggunakan templat fungsi mem_fun daripada Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Kekaburan Apabila Menggunakan Penunjuk Fungsi Terlebih Beban dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!