Rumah >pembangunan bahagian belakang >C++ >## Bolehkah Anda Dapatkan Penunjuk Fungsi untuk Operator C Terbina dalam?
Penunjuk fungsi menyediakan cara untuk merujuk kepada tertentu fungsi operator. Walau bagaimanapun, untuk pengendali standard terbina dalam, pendekatan ini mungkin tidak mudah. Artikel ini menyelidiki sebab di sebalik pengehadan ini dan meneroka penyelesaian alternatif untuk mencapai kefungsian yang serupa.
Mengikut Piawaian C (13.6/ 1), pengendali terbina dalam bukan fungsi pengendali biasa dan oleh itu tidak boleh mempunyai penunjuk fungsi yang menghalakannya. Mereka semata-mata mengambil bahagian dalam resolusi beban lampau tanpa melaksanakan sebarang tujuan lain.
Untuk mengatasi had ini, C Standard memperkenalkan objek fungsi, yang menyediakan kefungsian analog kepada terbina dalam operator melalui objek templat. Sebagai contoh, untuk perbandingan, objek fungsi seperti equal_to, greater, dan less_equal ditakrifkan. Objek ini boleh digunakan sebagai hujah penuding fungsi.
Dalam coretan kod yang disediakan, matlamatnya adalah untuk membandingkan dua integer dalam kelas templat. Menggunakan teknik objek fungsi, ia boleh dicapai seperti berikut:
<code class="cpp">class MyAction { bool operator()() { if (fnCompare_(arg0_, arg1_)) { // do this } else { // do s.th. else } } };</code>
Di sini, fnCompare_ boleh menjadi objek fungsi seperti std::equal_to
Selain objek fungsi, pengendali perpustakaan standard juga boleh digunakan sebagai penunjuk fungsi. Walau bagaimanapun, contoh templat masing-masing mesti dirujuk. Contohnya:
<code class="cpp">std::basic_string<char> a("test"), b("test2"); std::cout << test_function<std::basic_string<char>>(a, b, &std::operator+);</code>
Walaupun penunjuk fungsi tidak tersedia secara langsung untuk operator standard terbina dalam, penyelesaian alternatif yang disediakan oleh objek fungsi dan operator jenis kelas standard membenarkan kefungsian yang setara. Alternatif ini membolehkan penggunaan operator standard tertentu sebagai penunjuk fungsi, menangani had yang dibentangkan oleh operator terbina dalam.
Atas ialah kandungan terperinci ## Bolehkah Anda Dapatkan Penunjuk Fungsi untuk Operator C Terbina dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!