#include <iostream>
#include <string>
using namespace std;
/************************************************************************/
/* 类模板对象作为函数参数
1.指定传入的类型-显示指定对象的数据类型
2.参数模板化-将类对象中的参数作为模板进行传递
3.整个类模板化-将对象类型模板化进行传递
/************************************************************************/
template <class T1, class T2>
class Person{
public:
Person(T1 name, T2 age)
{
this->m_Name = name;
this->m_age = age;
}
void show_value()
{
cout<<"name:"<<m_Name<<endl;
cout<<"age:"<<m_age<<endl;
}
T1 m_Name;
T2 m_age;
};
//1.显示指定对象的数据类型
void test1(Person<string, int> &p)
{
p.show_value();
}
//2.对象参数模板化进行传递
template<class T1, class T2>
void test2(Person<T1, T2> &p)
{
p.show_value();
cout<<"T1数据类型:"<<typeid(T1).name()<<endl;
cout<<"T2数据类型:"<<typeid(T2).name()<<endl;
}
//3.类模板化
template<class T>
void test3(T &p)
{
p.show_value();
cout<<"T数据类型:"<<typeid(T).name()<<endl;
}
int main()
{
Person<string,int> p("孙悟空",500);
test1(p);
Person<string,int> p1("猪八戒",300);
test2(p1);
Person<string,int> p2("沙悟净",100);
test3(p2);
return 0;
}
C++ 类模板对象传参方式
最新推荐文章于 2024-08-12 13:55:36 发布