c++中简单的模板编程

/*函数的模板*/
//案例要求:需要一个两数相加的函数,该函数能进行任一同类型数据的相加,不同类型的数直接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;
}

//程序员新手,能力有限。如果注释有误希望评论区纠正,十分感谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值