C++ 模板

C++ 模板

0.泛型模板设计

​ 泛型程序设计(Generic Programming)是在实现时不指定具体要操作数据的类型的程序设计方法。所谓“泛型”,指的是算法只要实现一遍,就能适用于多种数据类型。泛型程序设计方法的优势在于能够减少重复代码的编写。

​ 在 C++ 中,模板分为函数模板类模板两种。

​ 所谓函数模板,实际上是建立一个通用函数,它所用到的数据的类型(包括返回值类型、形参类型、局部变量类型)可以不具体指定,而是用一个虚拟的类型来代替(实际上是用一个标识符来占位),等发生函数调用时再根据传入的实参来逆推出真正的类型。这个通用函数就称为函数模板(Function Template)。

​ 在函数模板中,数据的值和类型都被参数化了,发生函数调用时编译器会根据传入的实参来推演形参的值和类型。换个角度说,函数模板除了支持值的参数化,还支持类型的参数化。

​ 一但定义了函数模板,就可以将类型参数用于函数定义和函数声明了。说得直白一点,原来使用int、float、char 等内置类型的地方,都可以用类型参数来代替。

1.函数模板实例

#include <iostream>
using namespace std;

// 实现两个整型数字的交换
void mySwapInt(int &a, int &b)
{
   
        int temp = a;
        a = b;
        b = temp;
}
// 实现两个浮点类型数字的交换
void mySwapDouble(double &a, double &b)
{
   
        double temp = a;
        a = b;
        b = temp;
}

// 使用函数模板实现通用的交换
// 使用函数模板可以将类型参数化
template <typename T> // T属于通用数据类型,告诉编译器下面出现这个T类型,别报错
void mySwap(T &a, T &b)
{
   
        T temp = a;
        a = b;
        b = temp;
}

template <typename T>
void fun()
{
   
}

int main()
{
   

        int a = 10;
        int b = 20;
        mySwap(a, b); // 自动类型推导
        cout << "a : " << a << " , b : " << b << endl;

        char c = 'c';
        // mySwap(a, c); 必须推导出一致的T类型,才可以使用模板
        // 显示指定类型
        mySwap<int>(a, b);

        double d1 = 1.1;
        double d2 = 2.2;
        mySwap(d1, d2);
        cout << "d1 : " << d1 << 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值