#include<iostream>
#include<string>
using namespace std;
template <class NameType, class AgeType>
class Person
{
public:
Person(NameType name, AgeType age)
{
this->Myname = name;
this->Myage = age;
}
void ShowPerson()
{
cout << "姓名" << this->Myname << " 年龄" << this->Myage << endl;
}
NameType Myname;
AgeType Myage;
};
void test()
{
Person<string, int>p1("Tom", 10);
Person<string, int>p2("Jack", 20);
p1.ShowPerson();
p2.ShowPerson();
}
int main()
{
test();
return 0;
}
类模板与函数模板的区别:
类模板没有自动类型推导的使用方式
类模板在模板参数列表中可以有默认参数
示例:
1.类模板没有自动类型推导的使用方式
#include<iostream>
#include<string>
using namespace std;
template <class NameType, class AgeType>
class Person
{
public:
Person(NameType name, AgeType age)
{
this->Myname = name;
this->Myage = age;
}
void ShowPerson()
{
cout << "姓名" << this->Myname << " 年龄" << this->Myage << endl;
}
NameType Myname;
AgeType Myage;
};
void test()
{
//1.类模板没有自动类型推导的使用方式,不能写作Person p1("Tom", 10);
Person<string, int>p1("Tom", 10);//只能显示指定类型
p1.ShowPerson();
}
int main()
{
test();
return 0;
}
2. 类模板在模板参数列表中可以有默认参数
#include<iostream>
#include<string>
using namespace std;
//2.类模板在模板参数列表中可以有默认参数
template <class NameType, class AgeType = int>
class Person
{
public:
Person(NameType name, AgeType age)
{
this->Myname = name;
this->Myage = age;
}
void ShowPerson()
{
cout << "姓名" << this->Myname << " 年龄" << this->Myage << endl;
}
NameType Myname;
AgeType Myage;
};
void test()
{
Person<string>p1("Tom", 10);//这里可以不用写int
p1.ShowPerson();
}
int main()
{
test();
return 0;
}