Kekangan Templat dalam C : Melampaui Kekangan C#
Dalam pengaturcaraan berorientasikan objek, menentukan jenis dengan keperluan khusus boleh meningkatkan keteguhan kod dan mengelakkan ralat . Dalam C#, mengenakan kekangan pada parameter jenis generik memastikan bahawa hanya jenis yang memenuhi kriteria tertentu boleh digunakan.
Pelaksanaan C 11
C tidak menyokong kekangan templat secara asli, tetapi standard terkini (C 11) memperkenalkan static_assert dengan std::is_base_of sebagai penyelesaian. Ini membolehkan anda menguatkuasakan kekangan semasa penyusunan dengan mengesahkan sama ada parameter templat mewarisi daripada kelas asas yang ditentukan.
Contoh:
Pertimbangkan kod C 11 berikut:
<code class="c++">#include <type_traits> template<typename T> class YourClass { YourClass() { // Compile-time check static_assert(std::is_base_of<BaseClass, T>::value, "type parameter of this class must derive from BaseClass"); // ... } };</code>
Dalam contoh ini, templat YourClass memerlukan parameter jenis T untuk diwarisi daripada kelas asas BaseClass. Jika jenis bukan terbitan digunakan sebagai parameter, ralat pengkompil akan berlaku pada masa penyusunan, menghalang ralat masa jalan.
Pendekatan ini menyediakan kefungsian yang serupa dengan kekangan generik C# tetapi khusus untuk C 11 dan memerlukan penggunaan static_assert dan std::is_base_of.
Atas ialah kandungan terperinci Bagaimanakah C Boleh Meniru Kekangan Generik C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!