Dalam bidang pengaturcaraan C, kami sering menghadapi pengisytiharan templat yang menentukan parameter jenis, seperti templat
Pengisytiharan tidak konvensional ini menimbulkan beberapa persoalan: apakah yang membentuk parameter bukan jenis? Dan bagaimana templat boleh wujud tanpa sebarang parameter jenis?
Parameter bukan jenis dalam templat merujuk kepada nilai yang bukan jenis tetapi pemalar masa kompilasi . Jenis parameter bukan jenis termasuk:
Templat sememangnya boleh wujud tanpa sebarang parameter jenis eksplisit dengan menggunakan argumen lalai. Dalam kes sedemikian, nilai lalai diberikan kepada parameter bukan jenis. Contohnya:
<code class="cpp">template<unsigned int SIZE = 3> struct Vector { unsigned char buffer[SIZE]; };</code>
Dalam contoh ini, SIZE ialah parameter templat bukan jenis dengan nilai lalai 3. Apabila mengisytiharkan contoh struct Vektor tanpa menyatakan parameter SIZE, nilai lalai akan digunakan:
<code class="cpp">Vector<> test; // Size of buffer will be 3</code>
Adalah penting untuk membezakan antara pengkhususan templat eksplisit (ditandakan dengan templat<>) dan templat tanpa parameter. Yang pertama menentukan definisi alternatif untuk nilai parameter tertentu, manakala yang kedua tidak mempunyai parameter, hanya nilai lalai.
Kesimpulannya, templat boleh melangkaui parameter jenis dan merangkumi parameter bukan jenis juga. Fleksibiliti ini membolehkan pengaturcara mentakrifkan templat dengan pemalar masa kompilasi, penunjuk dan rujukan, meluaskan julat aplikasi templat dan mempertingkatkan kebolehgunaan semula kod.
Atas ialah kandungan terperinci Apakah Urusan dengan Parameter Bukan Jenis dalam Templat C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!