Rumah > pembangunan bahagian belakang > C++ > Mengapa Perlu Menggunakan Kurungan Sudut Kosong untuk Templat Kelas dengan Argumen Lalai dalam C 11 dan Terdahulu?

Mengapa Perlu Menggunakan Kurungan Sudut Kosong untuk Templat Kelas dengan Argumen Lalai dalam C 11 dan Terdahulu?

Barbara Streisand
Lepaskan: 2024-11-04 14:46:05
asal
630 orang telah melayarinya

Why Is It Necessary to Use Empty Angle Brackets for Class Templates with Default Arguments in C  11 and Earlier?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

perlu ambil perhatian bahawa sintaks ini hanya diperkenalkan dalam C 17. Sebelum itu, kod berikut diperlukan:

<code class="cpp">Foo<> me;</code>
Salin selepas log masuk

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!

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