Rumah >pembangunan bahagian belakang >C++ >Permudahkan kerumitan dan buka kunci pengaturcaraan templat C++
Pengaturcaraan templat C++ menggunakan parameterisasi jenis (template
Pemeteran jenis
Asas templat ialah parameterisasi jenis. Kami boleh mengisytiharkan fungsi atau kelas templat menggunakan kata kunci template<class t></class>
, dengan T
ialah parameter jenis. Contohnya:
template<class T> void print(T value) { std::cout << value << std::endl; }Fungsi templat ini boleh mencetak sebarang jenis data.
Pengkhususan
Kadangkala, kita mungkin perlu menyediakan pelaksanaan yang berbeza untuk jenis tertentu. Kita boleh mencapai ini menggunakan pengkhususan templat. Sebagai contoh, kita boleh mengkhususkan fungsiprint
untuk jenis char
: template<> void print<char>(char value) { std::cout << static_cast<int>(value) << std::endl; }Sekarang, apabila kita memanggil
print('a')
, yang akan mencetak nilai ASCII 97 untuk a
.
Contoh: Kelas Senaraitemplate<class t></class>
关键字来声明一个模板函数或类,其中 T
是类型参数。例如:
template<class T> class List { public: void add(T value) { elements.push_back(value); } void print() { for (T element : elements) { std::cout << element << " "; } std::cout << std::endl; } private: std::vector<T> elements; };
这个模板函数可以打印任何类型的数据。
特化
有时,我们可能需要为特定类型提供不同的实现。我们可以使用模板特化来实现这一点。例如,我们可以为 char
类型对 print
函数进行特化:
List<int> intList; intList.add(1); intList.add(2); intList.print(); // 输出:1 2 List<std::string> stringList; stringList.add("Hello"); stringList.add("World"); stringList.print(); // 输出:Hello World
现在,当我们调用 print('a')
时,它将打印 a
Mari kami menggunakan templat untuk mencipta kelas senarai yang boleh menyimpan sebarang jenis data. rrreeeKita boleh menggunakan kelas senarai ini untuk menyimpan integer, rentetan atau mana-mana jenis data lain:
rrreeeKesimpulanDengan memahami parameterisasi dan pengkhususan jenis, kita boleh menguasai pengaturcaraan templat C++. Ia membolehkan kami mencipta kod biasa dan boleh diguna semula, dengan itu mengurangkan pertindihan kod dan meningkatkan kecekapan pembangunan.
Atas ialah kandungan terperinci Permudahkan kerumitan dan buka kunci pengaturcaraan templat C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!