Rumah > pembangunan bahagian belakang > C++ > Templat Fungsi C: Berlebihan lwn. Pengkhususan Separa (Bukan Standard)?

Templat Fungsi C: Berlebihan lwn. Pengkhususan Separa (Bukan Standard)?

Linda Hamilton
Lepaskan: 2024-12-02 20:58:12
asal
331 orang telah melayarinya

C   Function Templates: Overloading vs. (Non-Standard) Partial Specialization?

Templat Fungsi: Pengkhususan Separa lwn. Lebih Muatan

Dalam C , pengkhususan separa templat fungsi tidak dibenarkan oleh standard bahasa. Walau bagaimanapun, penyusun tertentu mungkin menyediakan sambungan yang membenarkannya.

Pengkhususan Separa Ditakrifkan

Pengkhususan separa melibatkan penentuan templat dengan set hujah templat yang lebih khusus daripada templat asal . Untuk templat kelas, ini membayangkan menentukan nilai khusus untuk beberapa atau semua parameter templat.

Contoh: Pengkhususan Separa dan Lebih Muatan

Kod yang disediakan menunjukkan lebihan muatan, bukan separa. pengkhususan. Fungsi berikut ditakrifkan:

template<typename T1, typename T2>
inline T1 max(T1 const& a, T2 const& b)
{
    return a < b ? b : a;
}

template<typename T>
inline T const& max(T const& a, T const& b)
{
    return 10;
}
Salin selepas log masuk

Walaupun parameter templat fungsi kedua adalah sama dari segi jenis, ia bukan pengkhususan separa. Ia adalah fungsi berasingan yang melebihkan fungsi pertama.

Pengkhususan Templat Fungsi

Pengkhususan penuh templat fungsi, sebaliknya, dibenarkan. Ia melibatkan penentuan templat dengan semua parameter templat dinyatakan dengan jelas. Walau bagaimanapun, ia tidak disokong secara langsung oleh standard C dan hanya dilaksanakan dalam beberapa penyusun sebagai lanjutan.

Sambungan Pengkompil Pengkhususan Separa

Dalam Microsoft Visual Studio 2010 Express , sambungan pengkompil membenarkan pengkhususan separa untuk kedua-dua kelas dan templat fungsi. Ini bukan tingkah laku standard dan boleh mengakibatkan isu mudah alih.

Atas ialah kandungan terperinci Templat Fungsi C: Berlebihan lwn. Pengkhususan Separa (Bukan Standard)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan