Pengaturcaraan templat C++ menggalakkan kebolehgunaan semula dan fleksibiliti melalui kod generik yang boleh digunakan pada berbilang jenis data: mengisytiharkan templat: gunakan parameter templat jenis dalam kurungan sudut (cth. templat
Sintaks asas
Templat diisytiharkan menggunakan kata kunci
template <typename T> void swap(T& a, T& b) { T temp = a; a = b; b = temp; }
Taip inferens
Apabila fungsi atau kelas templat dipanggil, pengkompil biasanya boleh membuat kesimpulan parameter templat jenis daripada parameter sebenar. Ini bermakna anda tidak perlu menentukan parameter jenis secara eksplisit, contohnya:int a = 10; int b = 20; swap(a, b); // 编译器推断 T 为 int
Pengkhususan templat
Kadangkala, anda mungkin perlu menyediakan pelaksanaan yang berbeza untuk parameter templat jenis tertentu. Anda boleh mencapai ini melalui pengkhususan templat. Contohnya:// 为 char 类型特化 swap 函数 template <> void swap<char>(char& a, char& b) { // 特殊实现,例如 ASCII 字符交换 }
template
,后跟尖括号标识符。尖括号内的内容表示类型模板参数,它将被实际类型替换。例如:template <typename T> class OrderedArray { public: OrderedArray(int capacity); void insert(T value); bool find(T value); // 其他操作... };
类型推断
当调用模板函数或类时,编译器通常可以从实际参数推断类型模板参数。这意味着您不需要显式指定类型参数,例如:
template <typename T> class ComplexNumber { public: ComplexNumber(T real, T imaginary); T getReal(); T getImaginary(); // 其他数学运算... };
模板特化
有时,您可能需要为特定类型模板参数提供不同的实现。您可以通过模板特化来实现此目的。例如:
rrreee实战案例
有序数组
创建一个泛型有序数组类,其中 T
是数组元素的类型:
自定义类型
创建一个 ComplexNumber
模板类,其中 T
Tatasusunan tersusun🎜 Buat kelas tatasusunan tertib generik, dengan
T
ialah jenis elemen tatasusunan: 🎜rrreee🎜 jenis C🎜🎜🎜 🎜Buat kelas templat ComplexNumber
dengan T
ialah jenis nombor: 🎜rrreee🎜🎜Kesimpulan🎜🎜🎜Pengaturcaraan templat adalah penting untuk mencipta kod yang boleh digunakan semula, cekap dan serba boleh. Dengan memahami sintaks asas, inferens jenis dan pengkhususan templat, anda boleh menguasai kuasa pengaturcaraan templat C++ dan menerapkannya pada pelbagai senario dunia sebenar. 🎜Atas ialah kandungan terperinci Rahsia pengaturcaraan templat C++ terbongkar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!