Rumah > Artikel > pembangunan bahagian belakang > Mengapa Saya Tidak Boleh Membebankan Fungsi Berdasarkan Ketetapan Argumen Bukan Penunjuk/Bukan Rujukan dalam C ?
Melebihi Fungsi dengan Argumen Konst
Dalam C , lebihan fungsi membenarkan berbilang fungsi dengan nama yang sama digunakan bergantung pada hujah yang dihantar kepada mereka. Walau bagaimanapun, dalam situasi tertentu, melebihkan fungsi berdasarkan semata-mata pada keteguhan jenis bukan penuding, bukan rujukan adalah tidak boleh dilaksanakan.
Pertimbangkan coretan kod berikut:
class Test { public: int foo(int); int foo(const int) const; };
Dalam contoh ini, niat kami adalah untuk membebankan fungsi foo, di mana satu fungsi adalah fungsi const dan yang lain tidak. Namun, kod ini mengakibatkan ralat kompilasi yang menyatakan bahawa fungsi tidak boleh terlebih beban.
Mengapa ini berlaku?
Pengkompil tidak boleh menyahkaburkan fungsi yang hendak dipanggil walaupun terdapat kata kunci const dihidupkan hujahnya. Apabila diluluskan oleh nilai, nilai akan disalin tanpa mengira keteguhan hujah. Oleh itu, const pada hujah hanya relevan dalam definisi fungsi itu sendiri.
Akibatnya, pengkompil tidak dapat menentukan versi fungsi foo yang hendak dipanggil berdasarkan semata-mata pada keteguhan hujah.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Membebankan Fungsi Berdasarkan Ketetapan Argumen Bukan Penunjuk/Bukan Rujukan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!