Rumah >pembangunan bahagian belakang >C++ >Adakah Tandatangan Fungsi C Termasuk Jenis Pemulangan?

Adakah Tandatangan Fungsi C Termasuk Jenis Pemulangan?

Barbara Streisand
Barbara Streisandasal
2024-12-04 05:02:10696semak imbas

Does C   Function Signature Include the Return Type?

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:

  • Parameter jenis
  • Untuk ahli kelas, cv-qualifier pada fungsi dan mengandungi kelas

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!

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