Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah `std::bind` mengendalikan fungsi ahli dalam C ?
Memahami std::bind dengan Fungsi Ahli
std::bind ialah alat berkuasa dalam C untuk mencipta objek fungsi. Walau bagaimanapun, apabila digunakan dengan fungsi ahli, ia boleh menimbulkan persoalan.
Rujukan Hujah Pertama
Argumen pertama untuk std::bind, apabila ia melibatkan fungsi ahli, sentiasa menjadi rujukan (&). Ini bukan disebabkan oleh pelaksanaan std::bind tetapi sifat fungsi ahli. Fungsi ahli memerlukan objek yang boleh dikendalikannya. Dalam kes std::bind, objek ini dihantar melalui rujukan.
Argumen Kedua sebagai Rujukan Objek
Argumen kedua kepada std::bind when berurusan dengan fungsi ahli menentukan objek yang akan digunakan sebagai konteks untuk panggilan fungsi. Memandangkan fungsi ahli sentiasa terikat pada kelas tertentu, adalah penting untuk menyediakan contoh kelas itu.
Secara dalaman, std::bind mengesan kehadiran fungsi ahli dan secara automatik mengendalikan penciptaan objek boleh dipanggil yang menggabungkan objek yang dinyatakan dalam hujah kedua. Objek boleh panggil ini mengambil rujukan atau penuding objek sebagai hujah pertamanya dan penuding fungsi sebagai yang kedua.
Contoh
Pertimbangkan contoh berikut:
<code class="cpp">struct Foo { void print_sum(int n1, int n2) { std::cout << n1 + n2 << '\n'; } int data = 10; }; Foo foo; auto f = std::bind(&Foo::print_sum, &foo, 95, _1); f(5);</code>
Dalam contoh ini, hujah kedua untuk std::bind ialah &foo, yang memberikan rujukan kepada objek foo. Objek boleh panggil yang dicipta oleh std::bind mengambil &foo sebagai hujah pertamanya dan &Foo::print_sum sebagai kedua.
Memahami konsep ini membantu menjelaskan cara std::bind berfungsi dengan fungsi ahli dan membolehkan anda menggunakan dengan berkesan ciri ini dalam kod C anda.
Atas ialah kandungan terperinci Bagaimanakah `std::bind` mengendalikan fungsi ahli dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!