Dalam kod C yang disediakan, fungsi templat cal_size mencetak saiz argumen rujukan tatasusunan. Sungguh menarik bagaimana parameter templat N secara automatik mencerminkan panjang tatasusunan yang diluluskan.
N bukan pembolehubah yang dimulakan; ia adalah pemalar masa kompilasi. Melalui proses yang dikenali sebagai potongan hujah templat, kedua-dua T dan N disimpulkan daripada hujah yang dihantar kepada fungsi templat.
Pertimbangkan panggilan berikut untuk cal_size:
void cal_size_int_6(int (&a)[6]) { std::cout << "size of array is: " << 6 << std::endl; }
void cal_size_int_1(int (&a)[1]) { std::cout << "size of array is: " << 1 << std::endl; }
Pada asasnya, templat cal_size diterjemahkan kepada fungsi khusus individu dengan nilai kod keras N dan T. Fungsi utama menjadi setara dengan:
int main() { cal_size_int_6(a); cal_size_int_1(b); }
Ringkasnya, potongan hujah templat membolehkan templat menyimpulkan saiz tatasusunan daripada jenis hujah. Mekanisme asas melibatkan penjanaan fungsi khusus untuk setiap gabungan unik jenis hujah, masing-masing dengan nilai N dan T yang ditentukan secara statiknya sendiri.
Atas ialah kandungan terperinci Bagaimanakah Potongan Argumen Templat Menentukan Saiz Tatasusunan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!