Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Fungsi Statik dan Bukan Statik Dibebankan dalam C?

Bolehkah Fungsi Statik dan Bukan Statik Dibebankan dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 18:58:30479semak imbas

Can Static and Non-Static Functions Be Overloaded in C  ?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn