/*函数的模板*/ //案例要求:需要一个两数相加的函数,该函数能进行任一同类型数据的相加,不同类型的数直接template<typename T1, typename T2>void sum(T1 a, T2 b)。 #include <iostream> using namespace std; //书写格式如下 其中template <typename T>是固定的,后面正常加普通函数定义就行 // T 就当成一个数据类型,如int float double 等等。 template <typename T> void sum(T a, T b){ ??? cout << a << " + " << b << " = " << a + b << endl;//这里我直接打印 } int main(int argc, char* argv[]){ ??? sum(4.6 , 9.3);//这里是4.6 和 9.3 ,他们的类型都为double。所以T 其实就为 double ??? sum(5, 9);//这里是5 和 9 ,他们的类型都为int。所以T 其实就为 int ??? return 0; }
/*类的模板*/ //案例要求 实例化两个学生并给他们取名字,让他们介绍自己,一个学生会int的sum ,一个学生会duble的sum。 #include <iostream> using namespace std; //书写方式跟函数的模板差不多 template<typename T> class Student{ ??? public: ??????? void sum(T a, T b){ ??????????? cout << "a + b = " << a + b << endl; ??????? } ??????? Student(string name){ ??????????? this->name = name; ??????? } ??????? void introduction(){ ??????????? cout << "I am " << this->name << "I can all kinds of sum" << endl; ??????? } ??? private: ??????? string name; ??????? string sumType; }; int main(int argc, char* argv[]){ ??? Student<int> stu1("lll");//叫lll,能做关于int的加法??? 这里的<int>相当于让 T 变为 int,下面的double同理 ??? stu1.introduction();//学生的介绍 ??? stu1.sum(3, 5);
??? Student<double> stu2("kkk");//叫kkk,能做关于double的加法 ??? stu2.introduction(); ??? stu2.sum(3.6, 5.9); ??? // Student<int> stu2(); ??? return 0; }
/*在类中用函数模板*/ // 案例需求:实例化一个学生类并给其姓名,然后学生进行自我介绍,之后该学生演示int的加法和double的加法。 #include <iostream> using namespace std; // #include "classAndfuncTemplate.h" class Student{ ??? public: ??????? //直接写一个模板函数就行 ??????? template<typename T> void sum(T a, T b){ ??????????? cout << a << " + " << b << " = " << a + b << endl; ??????? } ??????? Student(string name){ ??????????? this->name = name; ??????? } ??????? void introduction(){ ??????????? cout << "I am " << this->name << "I can all kinds of sum" << endl; ??????? } ??? private: ??????? string name; }; int main(int argc, char* argv[]){ ??? Student stu1("大帅哥");//实例化学生并起名 ??? stu1.introduction();//学生做自我介绍 ??? stu1.sum(3,5);//学生做int加法 ??? stu1.sum(103.3,164.6);//学生做double加法 ??? // Student<int> stu2(); ??? return 0; }
//程序员新手,能力有限。如果注释有误希望评论区纠正,十分感谢!
|