**Bagaimana anda boleh menggunakan objek fungsi untuk mencapai kefungsian operator terbina dalam dalam C ?**

DDD
Lepaskan: 2024-10-26 03:44:27
asal
748 orang telah melayarinya

**How can you use function objects to achieve the functionality of built-in operators in C  ?**

Mendapatkan Penunjuk Fungsi kepada Operator Terbina dalam

Sekatan Penunjuk Operator

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.

Objek Fungsi untuk Aritmetik dan Perbandingan

Piawaian menyediakan objek fungsi untuk merangkum operasi aritmetik dan perbandingan, seperti sebagai:

  • sama_dengan
  • tidak_sama_dengan
  • lebih besar, kurang
  • lebih_sama
  • kurang_sama

Objek ini menyediakan kefungsian yang setara dengan pengendalinya yang sepadan dan boleh digunakan sebagai hujah penuding fungsi.

Operator Kelas Perpustakaan Standard

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 &amp;a, Test const &amp;b, Test (*FPtr)(Test const &amp;, Test const &amp;))
{
   return FPtr(a, b);
}</code>
Salin selepas log masuk

Contoh Pelaksanaan

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>
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!