Rumah >pembangunan bahagian belakang >C++ >Bolehkah Fungsi Statik Dibebankan dengan Fungsi Bukan Statik dalam C?

Bolehkah Fungsi Statik Dibebankan dengan Fungsi Bukan Statik dalam C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 03:39:02332semak imbas

Can Static Functions Be Overloaded with Non-Static Functions in 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):

  • Lebih muatan tidak dibenarkan untuk fungsi yang berbeza hanya dalam jenis pemulangan.
  • Pengisytiharan fungsi ahli dengan nama yang sama dan jenis parameter tidak boleh terlebih beban jika sebarang adalah pengisytiharan fungsi ahli statik.

Pertimbangan Kekaburan:

Walaupun lebihan muatan dibenarkan, ia akan menimbulkan kesamaran kerana:

  • Fungsi statik boleh dipanggil pada kejadian mengikut piawaian C (ISO 14882:2003, Seksyen 9.4/2).

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!

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