模板
模板函数
模板的基本使用规则如下:
template<typename T>
void m_swap(T &num1, T &num2){
T temp = num1;
num1 = num2;
num2 = temp;
}
int main(int argc, char const *argv[])
{
int num1 = 10;
int num2 = 20;
//自动类型推导调用
m_swap(num1, num2);
cout << num1 << endl;
cout << num2 << endl;
double num3 = 10.0;
double num4 = 7.6;
//显示指定类型调用
m_swap<double>(num3, num4);
cout << num3 << endl;
cout << num4 << endl;
return 0;
}
注意:使用模板时必须确定出通用数据类型T,并且能够推导出一致的类型。
普通函数和模板函数的调用规则
- 如果模板函数和普通函数都有实现,则优先调用普通函数
- 可以通过空模板参数列表来强制调用函数模板
- 函数模板可以发生重载
- 如果模板函数可以产生更好的匹配,则优先调用模板函数
模板类
模板类的基本使用方法如下:
template<typename nameType, typename ageType>
class Student {
public:
nameType name;
ageType age;
public:
Student(nameType name, ageType age) {
this->name = name;
this->age = age;
}
void ShowName(){
cout << this->name << endl;
}
};
int main(int argc, char const *argv[]) {
Student<string, int> stu("xiaoming", 18);
stu.ShowName();
system("pause");
return 0;
}