Melebihkan Fungsi Statik dan Bukan Statik dalam C
Dalam C , tidak mungkin untuk melebihkan fungsi statik dengan bukan statik berfungsi kerana larangan eksplisit dalam piawaian C. Ini dinyatakan dalam ISO 14882:2003 C Standard 13.1/2, yang menyatakan bahawa pengisytiharan fungsi ahli dengan nama yang sama dan jenis parameter tidak boleh terlebih beban jika mana-mana daripadanya ialah pengisytiharan fungsi ahli statik.
Kekaburan dengan Invokasi Fungsi Statik
Selain itu, memanggil fungsi statik pada kejadian boleh dilakukan dalam C . Mengikut Piawaian ISO 14882:2003 C 9.4/2, ahli statik kelas X boleh dirujuk menggunakan ungkapan qualified-id X::s, yang bermaksud tidak wajib untuk menggunakan sintaks akses ahli kelas untuk mengakses a ahli statik.
Ini membawa kepada kekaburan apabila memanggil fungsi statik pada kejadian. Pertimbangkan contoh berikut:
<code class="cpp">class Foo { public: string bla; Foo() { bla = "nonstatic"; } void print() { cout << bla << endl; } static void print() { cout << "static" << endl; } };</code>
Dalam contoh ini, memanggil f.print() adalah samar-samar kerana tidak jelas sama ada untuk memanggil fungsi print() statik atau bukan statik. Walaupun piawaian C membenarkan memanggil fungsi ahli statik melalui sintaks ini, kehadiran fungsi bukan statik dengan nama yang sama memperkenalkan kekaburan.
Menyemak Seruan Fungsi Statik
Berbeza dengan PHP, C tidak menyediakan cara langsung untuk menyemak sama ada fungsi dipanggil secara statik atau tidak. Kata kunci ini, yang menunjuk ke objek yang digunakan untuk fungsi itu, akan sentiasa menunjuk ke objek, menjadikannya mustahil untuk menentukan sama ada fungsi itu dipanggil secara statik atau tidak.
Atas ialah kandungan terperinci Bolehkah Fungsi Statik dan Bukan Statik Dibebankan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!