Rumah >pembangunan bahagian belakang >C++ >Adakah Tandatangan Fungsi C Termasuk Jenis Pemulangan?
Adakah Jenis Pemulangan Mempengaruhi Tandatangan Fungsi?
Dalam C , fungsi yang diisytiharkan tanpa templat fungsi mengecualikan jenis pemulangannya dalam tandatangannya. Melebihkan fungsi hanya berdasarkan jenis pemulangan yang berbeza adalah dilarang.
Penjelasan Terperinci
Hubungan antara fungsi, pengisytiharan dan tandatangannya adalah rumit.
Pengisytiharan dan Entiti
A pengisytiharan fungsi boleh mengisytiharkan entiti fungsi atau entiti templat. Fungsi biasa dan pengkhususan eksplisit templat fungsi tergolong dalam kategori pertama. Templat fungsi utama atau pengkhususan eksplisit dengan hujah yang tidak ditentukan termasuk dalam kategori yang terakhir.
Definisi Tandatangan
Menurut Standard C (1.3.10), tandatangan fungsi merangkumi yang berikut:
Walau bagaimanapun, takrifan ini tidak menyebut jenis pulangan.
Fungsi Templat dan Jenis Pengembalian
Sebaliknya, tandatangan pengkhususan templat fungsi termasuk kedua-dua tandatangan fungsi dan jenis pemulangan (14.5.5.1).
Jadi, Apakah Tepatnya Menjadi Tandatangan?
Untuk fungsi bukan templat, tandatangan tidak termasuk jenis pemulangan. Walau bagaimanapun, untuk pengkhususan templat, jenis pemulangan digabungkan.
Implikasi untuk Lebihan Muatan
Standard melarang lebihan muatan berdasarkan semata-mata pada jenis pulangan yang berbeza. Walau bagaimanapun, ia masih samar-samar tentang apa yang membentuk perbezaan sedemikian.
Gelagat Pengkompil
Penyusun utama menolak kod berikut kerana jenis yang tidak serasi:
int f(); double f(); // invalid
Walau bagaimanapun, mereka terima:
template<typename T> int f(); template<typename T> double f(); // invalid?
Kesimpulan
Jenis pemulangan, walaupun bukan sebahagian daripada tandatangan untuk fungsi bukan templat, adalah penting dalam menentukan keserasian jenis fungsi. Memahami nuansa ini adalah penting untuk pengaturcaraan C yang berkesan.
Atas ialah kandungan terperinci Adakah Tandatangan Fungsi C Termasuk Jenis Pemulangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!