Memahami Argumen Templat dan Templat Lalai
Dalam C , hujah templat merupakan aspek penting dalam bekerja dengan templat kelas dan fungsi. Apabila mengisytiharkan templat kelas dengan hujah templat lalai, kita boleh mengetepikan penentuan hujah semasa mencipta objek, tetapi tingkah laku ini tertakluk kepada pengehadan tertentu.
Untuk menggambarkan, mari kita periksa kod berikut:
<code class="cpp">template <typename T = int> class Foo { };</code>
Kod ini mentakrifkan templat kelas Foo dengan hujah templat lalai T = int. Walaupun kita boleh mencipta objek Foo tanpa menyatakan hujah templat secara eksplisit:
<code class="cpp">Foo me;</code>
perlu ambil perhatian bahawa sintaks ini hanya diperkenalkan dalam C 17. Sebelum itu, kod berikut diperlukan:
<code class="cpp">Foo<> me;</code>
Kurungan sudut (<>) menunjukkan bahawa hujah templat hadir tetapi kosong. Sintaks ini diperlukan kerana pengkompil perlu mengetahui jenis T, walaupun ia menggunakan nilai lalai. Kegagalan untuk menyediakan argumen templat, seperti dalam Foo me;, akan mengakibatkan ralat penyusunan.
Perbezaan ini adalah analog kepada fungsi dengan satu argumen lalai. Sama seperti foo tanpa kurungan tidak akan memanggil fungsi, tetapi foo() akan, sintaks hujah templat mesti hadir untuk mencetuskan instantiasi dengan nilai lalai.
Atas ialah kandungan terperinci Mengapa Perlu Menggunakan Kurungan Sudut Kosong untuk Templat Kelas dengan Argumen Lalai dalam C 11 dan Terdahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!