/*函数的模板*/
//案例要求:需要一个两数相加的函数,该函数能进行任一同类型数据的相加,不同类型的数直接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;
}
//程序员新手,能力有限。如果注释有误希望评论区纠正,十分感谢!