Rumah >pembangunan bahagian belakang >C++ >**Bagaimana anda boleh menggunakan objek fungsi untuk mencapai kefungsian operator terbina dalam dalam C ?**
Dalam C , pengendali terbina dalam kekurangan rakan penunjuk fungsi sebenar dan tidak memainkan peranan melangkaui resolusi beban berlebihan. Untuk menangani perkara ini, piawaian mentakrifkan objek fungsi yang mencerminkan kelakuan operator terbina dalam.
Piawaian menyediakan objek fungsi untuk merangkum operasi aritmetik dan perbandingan, seperti sebagai:
Objek ini menyediakan kefungsian yang setara dengan pengendalinya yang sepadan dan boleh digunakan sebagai hujah penuding fungsi.
Pengendali perpustakaan standard tertentu membenarkan penunjuk fungsi. Walau bagaimanapun, ini memerlukan penentuan jenis templat objek yang terlibat. Sebagai contoh, untuk menggunakan operator daripada std::basic_string, seseorang boleh melaksanakan perkara berikut:
<code class="cpp">template<class Test> Test test_function (Test const &a, Test const &b, Test (*FPtr)(Test const &, Test const &)) { return FPtr(a, b); }</code>
Kod berikut menunjukkan penggunaan objek fungsi untuk operasi perbandingan :
<code class="cpp">template<typename ParamsType, typename FnCompareType> class MyAction { public: MyAction(ParamsType& arg0, ParamsType& arg1, FnCompareType& fnCompare) : arg0_(arg0), arg1_(arg1), fnCompare_(fnCompare) {} bool operator()() { if((*fnCompare_)(arg0_,arg1_)) { // do this } else { // do s.th. else } } private: ParamsType& arg0_; ParamsType& arg1_; FnCompareType& fnCompare_; }; void doConditional(int param1, int param2) { MyAction<int, std::equal_to<int>> action(param1,param2); if(action()) { // Do this } else { // Do that } }</code>
Atas ialah kandungan terperinci **Bagaimana anda boleh menggunakan objek fungsi untuk mencapai kefungsian operator terbina dalam dalam C ?**. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!