Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menjelaskan Fungsi Templat dalam C ?

Bagaimana untuk Menjelaskan Fungsi Templat dalam C ?

Barbara Streisand
Lepaskan: 2024-12-09 00:40:10
asal
186 orang telah melayarinya

How to Explicitly Instantiate Template Functions in C  ?

Penyebaran Eksplisit Fungsi Templat

Dalam C , fungsi templat menyediakan cara untuk mentakrifkan operasi yang boleh beroperasi pada jenis yang berbeza. Kadangkala, fungsi templat perlu dibuat secara eksplisit tanpa memanggilnya secara langsung. Ini boleh berguna dalam situasi di mana pengkompil tidak boleh membuat kesimpulan secara automatik argumen templat.

Pertimbangkan contoh berikut:

template <class T> int function_name(T a);
Salin selepas log masuk

Untuk menyatakan secara eksplisit fungsi ini untuk integer, seseorang mungkin cuba menulis:

template int function_name<int>(int);
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini menghasilkan perkara berikut ralat:

error: expected primary-expression before 'template'
error: expected `;' before 'template'
Salin selepas log masuk

Untuk membuat seketika fungsi dengan betul, gunakan sintaks berikut:

template <typename T> void func(T param); // definition

template void func<int>(int); // explicit instantiation
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa kod ini melaksanakan instantiasi eksplisit, bukan pengkhususan. Sintaks untuk pengkhususan berbeza sedikit:

template <typename T> void func(T param); // definition

template <> void func<int>(int); // specialization
Salin selepas log masuk

Instasiasi eksplisit memastikan bahawa kod untuk fungsi templat instantiated dijana oleh pengkompil, menjadikannya tersedia untuk digunakan tanpa perlu memanggil terus fungsi templat dengan yang sesuai taip hujah.

Atas ialah kandungan terperinci Bagaimana untuk Menjelaskan Fungsi Templat dalam C ?. 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