1.类模版
示例:
#include <iostream>
namespace ClassTempalteTest {
//类模板
template <class T> class Person {
public:
Person(T id, T age) {
this->mAge_ = age;
this->mId_ = id;
}
void showPerson() {
std::cout << "id:" << mId_ << ",age:" << mAge_ << std::endl;
}
public:
T mId_;
T mAge_;
};
//函数模板在调用时,可以自动进行类型推导
//类模板必须显式声明
void testShow() {
Person<int> person(12, 11111);
person.showPerson();
}
} // namespace ClassTempalteTest
int main() {
ClassTempalteTest::testShow();
return 0;
}
说明:
函数模板在调用时,可以自动进行类型推导
类模板必须显式声明
2.函数模板
示例:
实现对int和char类型数组进行排序
#include <iostream>
//函数模板实例
//对int和char类型数组进行排序
namespace FunctionTemplateTest {
template <class T> void printArray(T *arr, int len) {
for (int i = 0; i < len; i++) {
std::cout << "arr[" << i << "] = " << arr[i] << std::endl;
}
}
template <class T> void sortArray(T *arr, int len) {
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
if (arr[i] > arr[j]) {
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
void arrayTest() {
int array[] = {1, 4, 9, 2, 7, 5};
int len = sizeof(array) / sizeof(int);
std::cout << "------------int array test--------" << std::endl;
printArray(array, len);
std::cout << "------------after sort--------" << std::endl;
sortArray(array, len);
printArray(array, len);
std::cout << "------------char array test--------" << std::endl;
char chArr[] = {'a', 'f', 'w', 'd', 'o'};
int len_chArr = sizeof(chArr) / sizeof(char);
printArray(chArr, len_chArr);
std::cout << "------------after sort--------" << std::endl;
sortArray(chArr, len_chArr);
printArray(chArr, len_chArr);
}
} // namespace FunctionTemplateTest
int main() {
FunctionTemplateTest::arrayTest();
return 0;
}