Mengatasi Fungsi Terlebih Beban dalam C
Pertimbangkan senario di mana kelas terbitan mengatasi fungsi daripada kelas asasnya yang terlebih beban. Apabila mengatasi, anda mungkin menghadapi ralat yang menunjukkan ketiadaan fungsi terlampau beban dalam kelas terbitan. Tingkah laku ini bukan kecacatan reka bentuk tetapi akibat daripada mekanisme pewarisan C.
Secara lalai, apabila kelas mengatasi fungsi ahli, hanya versi yang diganti dianggap dalam skop kelas terbitan. Oleh itu, mana-mana versi lebihan fungsi dalam kelas asas tidak lagi boleh diakses.
Untuk menyelesaikan isu ini dan mengekalkan keupayaan lebihan beban, anda boleh menggunakan arahan penggunaan dalam kelas terbitan:
<code class="cpp">class bar : public foo { using foo::a; // Bring overloads from 'foo' into 'bar' };</code>
Arahan penggunaan secara eksplisit menyatakan bahawa lebihan beban daripada kelas foo harus tersedia dalam kelas bar. Ini membolehkan kelas terbitan mengakses dan menggunakan semua versi fungsi yang terlebih muatan.
Perlu ambil perhatian bahawa penggunaan arahan penggunaan boleh menimbulkan kesamaran jika beban lampau yang sama wujud dalam kedua-dua kelas asas dan terbitan. Selain itu, jika kod sedia ada bergantung pada gelagat khusus beban kelas asas, memperkenalkan lebihan baharu boleh mengubah fungsi yang dimaksudkan. Oleh itu, berhati-hati dinasihatkan apabila menggunakan teknik ini.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Fungsi Terlebih Beban dalam C Sambil Mengekalkan Gelagat Terlebih Beban?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!