C++ //类模板对象做函数参数 //三种方式 //1.指定传入的类型 --直接显示对象的数据类型 //2.参数模板化 --将对象中的参数变为模板进行传递 //3.整个类模板化 --将这个对象类型 模板化进行传递
1 //类模板对象做函数参数 2 //三种方式 3 //1.指定传入的类型 --直接显示对象的数据类型 4 //2.参数模板化 --将对象中的参数变为模板进行传递 5 //3.整个类模板化 --将这个对象类型 模板化进行传递 6 7 8 #include <iostream> 9 #include <string> 10 #include<fstream> 11 using namespace std; 12 13 14 template<class T1,class T2> 15 class Person 16 { 17 public: 18 Person(T1 name, T2 age) 19 { 20 this->m_Name = name; 21 this->m_Age = age; 22 } 23 void showPerson() 24 { 25 cout << "姓名: " << this->m_Name << " 年龄: " << this->m_Age << endl; 26 27 } 28 29 T1 m_Name; 30 T2 m_Age; 31 }; 32 33 //三种方式 34 //1.指定传入的类型 --直接显示对象的数据类型 35 36 void printPerson1(Person<string, int>&p) 37 { 38 p.showPerson(); 39 } 40 41 void test01() 42 { 43 Person<string, int>p("张三", 20); 44 printPerson1(p); 45 46 47 } 48 49 50 51 52 53 //2.参数模板化 --将对象中的参数变为模板进行传递 54 template<class T1,class T2> 55 void printPerson2(Person<T1, T2>&p) 56 { 57 p.showPerson(); 58 cout << "T1的类型为: " << typeid(T1).name() << endl; 59 cout << "T2的类型为: " << typeid(T2).name() << endl; 60 61 } 62 63 void test02() 64 { 65 Person<string, int>p("李四", 222); 66 printPerson2(p); 67 } 68 69 70 71 72 73 //3.整个类模板化 --将这个对象类型 模板化进行传递 74 template<class T> 75 void printPerson3(T &p) 76 { 77 p.showPerson(); 78 cout << "T的数据类型: " << typeid(T).name() << endl; 79 } 80 void test03() 81 { 82 Person<string, int>p("王五", 84); 83 printPerson3(p); 84 } 85 86 87 88 int main() 89 { 90 91 test01(); 92 test02(); 93 test03(); 94 system("pause"); 95 96 return 0; 97 98 }
本文来自博客园,作者:Bytezero!,转载请注明原文链接:https://www.cnblogs.com/Bytezero/p/15135924.html