Rumah >pembangunan bahagian belakang >C++ >Bolehkah Fungsi Statik Dibebankan dengan Fungsi Bukan Statik dalam C?
Melebihi Muatan Fungsi Statik dengan Fungsi Bukan Statik dalam C
Konteks:
Melebihi fungsi dengan jenis pulangan yang berbeza tidak disokong dalam C , dan perkara yang sama berlaku apabila cuba membebankan fungsi statik dengan fungsi bukan statik. Senario ini digambarkan dalam definisi kelas yang disediakan, tetapi ia menghasilkan ralat.
Larangan Standard:
Tingkah laku ini dilarang secara jelas oleh standard C (ISO 14882: 2003, Seksyen 13.1/2):
Pertimbangan Kekaburan:
Walaupun lebihan muatan dibenarkan, ia akan menimbulkan kesamaran kerana:
Contohnya:
<code class="cpp">class Foo { public: static void print() { cout <p><strong>Pendekatan Alternatif:</strong></p> <p>Memandangkan menentukan sama ada fungsi dipanggil secara statik atau tidak tidak boleh dilakukan dalam C , kaedah alternatif boleh digunakan untuk mencapai kefungsian yang diingini:</p> <ul> <li>Gunakan <strong>prapemproses</strong> untuk mentakrifkan makro yang boleh membezakan antara panggilan statik dan bukan statik.</li> <li>Buat fungsi berasingan dengan <strong>nama yang berbeza</strong> untuk gelagat statik dan bukan statik.</li> <li>Gunakan <strong>penyataan bersyarat</strong> berdasarkan kehadiran atau ketiadaan objek (cth., menyemak nilai ini). Walau bagaimanapun, kaedah ini tidak dapat membezakan antara panggilan statik dan contoh.</li> </ul></code>
Atas ialah kandungan terperinci Bolehkah Fungsi Statik Dibebankan dengan Fungsi Bukan Statik dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!