Rumah >pembangunan bahagian belakang >C++ >Mengapa Anda Tidak Boleh Membebankan Fungsi Statik dan Bukan Statik dalam C ?
Melebihkan Fungsi Statik dengan Fungsi Bukan Statik dalam C
Dalam C , melebihkan fungsi statik dan bukan statik dengan nama yang sama bukanlah dibenarkan. Ini dinyatakan secara eksplisit dalam piawaian C, yang melarang fungsi lebih muatan yang hanya berbeza dalam jenis pulangan atau mempunyai nama dan jenis parameter yang sama jika salah satu daripadanya adalah statik.
Pertimbangkan kelas berikut:
<code class="cpp">class Foo { string bla; Foo() { bla = "nonstatic"; } void print() { cout << bla << endl; } static void print() { cout << "static" << endl; } };</code>
Walaupun takrif kelas ini mungkin kelihatan munasabah, ia tidak sah mengikut piawaian C. Lebih memuatkan fungsi statik dan bukan statik adalah dilarang kerana ia akan membawa kepada kekaburan, kerana fungsi statik juga boleh dipanggil menggunakan sintaks akses ahli objek (.).
Sebagai contoh, dalam coretan kod berikut:
<code class="cpp">Foo f; f.print();</code>
Tidak jelas sama ada fungsi cetakan statik atau fungsi cetakan bukan statik harus dipanggil.
Selain itu, C tidak menyediakan cara untuk menentukan sama ada fungsi dipanggil secara statik atau tidak, seperti dalam PHP. Kata kunci ini, yang menunjuk kepada objek yang digunakan untuk fungsi tersebut, akan sentiasa bukan nol.
Ringkasnya
Melebihi beban fungsi statik dan bukan statik dengan nama yang sama tidak dibenarkan dalam C . Selain itu, tiada mekanisme untuk membezakan antara panggilan fungsi statik dan bukan statik dalam badan fungsi.
Atas ialah kandungan terperinci Mengapa Anda Tidak Boleh Membebankan Fungsi Statik dan Bukan Statik dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!