Rumah > pembangunan bahagian belakang > C++ > Bolehkah anda mendapatkan penunjuk fungsi kepada operator standard terbina dalam dalam C?

Bolehkah anda mendapatkan penunjuk fungsi kepada operator standard terbina dalam dalam C?

Barbara Streisand
Lepaskan: 2024-10-25 22:10:28
asal
198 orang telah melayarinya

Can you get a function pointer to a built-in standard operator in C  ?

Adakah mungkin untuk mendapatkan penunjuk fungsi pengendali standard terbina dalam?

Mengapa operator terbina dalam tidak t mempunyai penunjuk fungsi

C 11 mentakrifkan operator terbina dalam dalam [over.built] dan menentukan bahawa operator ini mengambil bahagian dalam resolusi beban lampau tetapi tidak mempunyai tujuan lain. Oleh itu, anda tidak boleh mempunyai penunjuk fungsi yang menghala ke arahnya.

Bekerja dengan objek fungsi

Untuk menangani isu ini, standard memperkenalkan objek fungsi dalam [function.objects]. Objek ini boleh mereput kepada operator yang sepadan dalam fungsi operator()nya:

  • Operasi aritmetik
  • Perbandingan (sama_dengan, bukan_sama_dengan, lebih besar/kurang, lebih_sama/kurang_sama)
  • Operasi logik
  • Operasi bitwise

Objek fungsi boleh digunakan sebagai hujah penunjuk fungsi, seperti yang ditunjukkan dalam respons yang diberikan oleh user1034749.

Menggunakan jenis kelas standard operator

Untuk operator perpustakaan standard, anda boleh menggunakannya sebagai penunjuk fungsi, walaupun anda perlu merujuk kepada contoh templat masing-masing. Pengkompil memerlukan petunjuk yang mencukupi untuk menyimpulkan templat yang betul. Berikut ialah contoh:

<code class="cpp">#include <iostream>
#include <string>

using namespace std;

template<class Test>
Test test_function(Test const &a, Test const &b, Test (*FPtr)(Test const &, Test const &))
{
   return FPtr(a, b);
}

int main()
{
   typedef basic_string<char> String;
   String a("test"), b("test2");
   cout << test_function(a, b, &operator+);
   return 0;
}</code>
Salin selepas log masuk

Dalam contoh ini, operator disediakan sebagai penuding fungsi untuk fungsi_test. Ambil perhatian bahawa jika anda meninggalkan hujah templat untuk test_function, potongan akan gagal dalam beberapa penyusun seperti MSVC 2012.

Atas ialah kandungan terperinci Bolehkah anda mendapatkan penunjuk fungsi kepada operator standard terbina dalam dalam 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