成长随心记7

1,模板
    1)泛型编程思想主要是用的模板技术
    2)有两种模板技术,一种是函数模板,一种是类模板

1)函数模板
    1)建立一个通用函数,其参数类型和返回类型不确定,用T代替
    2)例:template<typename T>
                T fan(T a,T b){}
    3)模板的调用,显示调用:fan<int>(a,b);<int>:即a,b的类型
                             自动类型调用:fan(a,b);
    4)注意:模板必须要确定出T的类型才能调用
                   自动类型调用时T的类型必须推导出一致才能调用
    
2)普通函数与函数模板的区别
    1)普通函数可以发生隐式类型转换
    2)自动调用函数模板不能发生隐式类型转换
    3)显示调用可以
    4)注意:函数模板普通函数同时存在时,优先调用普通函数
                   如果要调用模板可以用空函数模板参数来实现即   <>
                   函数模板也可以发生重载
                   如果函数模板可以更好发生匹配,优先调用模板
                   类模板中的函数是调用是才去创建
    5)建议:如果用了函数模板,尽量不要用普通函数,因为会发生歧义

3)类模板
    注意:类模板不能自动类型推导
              类模板在类模板参数列表中可以有默认参数类型 例:template <class name=string,class age=int>
              所以在调用时可以省略参数类型 例:person<>p("张三",19);//类模板的调用
    例:
    template <class name,class age>//类模板的定义
    class person {
    public:
        name m_name;
        age m_age;
        person(name a, age b):m_name(a),m_age(b){}
        void show() {
            cout << m_name << m_age;
        }
    };
    int main()
    {
        person<string, int>p("张三",19);//类模板的调用
        person<int, int >p1(1, 1);//类模板的调用
        p.show();
    }

4)类模板做参数传入函数:直接传入,例:fan(person<string,int> &p)
                  如果想查看T是什么类型用typeid(T).name();


5)在类外定义成员函数:
    例:template<class T>
    void person<T>::fan() {
        cout << name;
    }


------------------------------------------------------------------------------------------------------------------------------    

今日心得:发现一个重要问题,我特别容易忘记以前学的内容,所以要找个时间去复习以前学的内容,然后学习进度也不能落下,就学习两天复习一天吧
    坚持!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

噌105

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值