C++——模板编程(P1)

模板 P1

模板属于静态多态,作用于编译阶段。

C++抽象机制

  1. 面向对象编程

  2. 模板编程——编译时间变长

    ●泛型编程:注重于“通用概念”的抽象,设计通用的类型或算法,不需要过于关心编译器如何生成具体的代码。

    ●元编程:注重于设计模板推导时的选择和迭代,通过模板技巧设计程序。

C++为什么要引入模板?

  1. 宏定义只是简单的替换,很多事情做不了。
  2. 如果没有模板,那stl容器就需要实现很多遍。

函数模板

template <typename T>
void print(T t) {
    cout << "call template function" << endl;
}

函数模板特化

template <>
void print(int n) {
    cout << "call template int function" << endl;
}

tips:

  1. 没有调用,模板就不会进行实例化。
  2. auto关键字对模板返回值的推导仅在C++14及以上版本支持,在C++11中可以使用decltype关键字进行替代。例子如下:
template <typename T, typename U>
auto add(T a, U b) {//仅在C++14及以上版本支持
    return a + b;
}
template <typename T, typename U>
auto add(T a, U b)->decltype(a + b) {//C++11可以用decltype进行替代
    return a + b;
}

————————————————————————————————————————————

本人倾向于先将学到的知识写成博客分享出来,之后在进行整理。如果文章不见了,大概率被整合到了其他相关文章当中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值