Bolehkah Operator Standard Terbina Dalam Mempunyai Penunjuk Fungsi?
Dalam C , anda tidak boleh terus merujuk kepada penunjuk fungsi pengendali terbina dalam kerana mereka sebenarnya tidak mewakili objek fungsi. Menurut piawaian C 11, pengendali terbina dalam direka khusus untuk resolusi beban lampau dan tidak boleh digunakan untuk tujuan lain.
Mengatasi Had:
Untuk mengatasinya ini, anda boleh menggunakan objek fungsi yang ditakrifkan dalam perpustakaan standard (§20.8). Objek fungsi ini, seperti equal_to untuk perbandingan, mereput kepada operator yang setara dalam fungsi operator() mereka. Mereka boleh berfungsi sebagai hujah yang sah untuk penunjuk fungsi.
Mengakses Operator Kelas Standard:
Walaupun operator terbina dalam tidak boleh diakses secara langsung, anda boleh menggunakan operator perpustakaan standard sebagai penunjuk fungsi. Walau bagaimanapun, anda mesti menentukan contoh templat yang sesuai untuk membimbing pengkompil. Sebagai contoh, jika anda ingin menggunakan pengendali std::basic_string, anda perlu menyatakan secara eksplisit jenis templatnya seperti berikut:
<code class="cpp">typedef std::basic_string<char> string_type; ... std::cout << test_function<string_type>(a, b, &std::operator+) << std::endl;</code>
Kesimpulan:
Walaupun pengendali terbina dalam tidak boleh mempunyai penunjuk fungsi langsung kerana peranan unik mereka, anda boleh mengakses kefungsian mereka melalui objek fungsi yang disediakan oleh perpustakaan standard atau dengan menentukan contoh templat yang diperlukan untuk pengendali kelas standard.
Atas ialah kandungan terperinci Bolehkah Anda Menggunakan Penunjuk Fungsi dengan Operator Terbina dalam dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!