cari

Rumah  >  Soal Jawab  >  teks badan

c++ - Objek fungsi generik.

Saya baru sahaja melihat sekeping kod ini apabila saya melihat fungsi salinan analisis kod sumber stl

template<class InputIterator,class OutputIterator>
inline OutputIterator copy(InputIterator first,InputIterator last,OutputIterator result)
{
    return __copy_dispatch<InputIterator,OutputIterator>()(fist,last,result);//这是个函数
}

//这是完全泛化的的版本。
template <class InputIterator,class OutputIterator>
struct __copy_dispatch
{
    OutputIterator operator()(InputIterator first,InputIterator last,OutputIterator result)
    {
        return __copy(first,last,result,iterator_category(first));
    }    
};

__copy_dispatch ini ialah struct dengan operator yang terlebih muatan () Apabila dipanggil dalam salinan, ia terus

__copy_dispatch<InputIterator,OutputIterator>()(fist,last,result);

Secara langsunggunakan struct ini untuk memanggil operator (), tetapi tidak menggunakan objek stuct.

Adakah ini okay? Saya dengan cepat melihat melalui c++ primer dan tidak dapat mencari jawapannya.
Tolong bantu saya menjawab soalan ini. terima kasih, terima kasih.

淡淡烟草味淡淡烟草味2738 hari yang lalu872

membalas semua(3)saya akan balas

  • 習慣沉默

    習慣沉默2017-05-16 13:24:50

    __copy_dispatch<InputIterator,OutputIterator>()

    Ini ialah kelas panggilan

    __copy_dispatch<InputIterator,OutputIterator>
    Pembina lalai

    , fungsinya adalah untuk menjana objek sementara. Seterusnya

    (fist,last,result)
    Fungsi

    adalah untuk memanggil operator() pada objek sementara ini dengan pertama, terakhir dan hasil sebagai parameter sebenar.

    balas
    0
  • 怪我咯

    怪我咯2017-05-16 13:24:50

    Menggunakan struct ini, operator () dipanggil Ini adalah maksud functor. Fungsinya di sini adalah untuk mencipta objek tanpa nama

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:24:50

    Sebenarnya, lambda juga mencipta kelas yang membebankan operator() untuk mencapai kesan functor.

    balas
    0
  • Batalbalas