C++-函数模板(头歌)

任务描述

本关任务:编写一个求两个数的和的函数模板。

相关知识

为了完成本关任务,你需要掌握:

什么是C++函数模板;

C++函数模板的例子。

函数模板

C++提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。

举个例子,比如我们要写一个函数,求两个数字的和,我们需要为求两个整数的和写一个函数,又需要为求两个浮点数的和写一个函数。函数的实现基本相同,唯一的区别是参数的类型不同。

那么,能不能再抽象一点,把参数的类型也设置为可以传入的呢?答案是可以,这就是函数模板。

函数模板的写法如下:

template <class 类型参数1, class类型参数2, ...>

返回值类型 模板名(形参表)

{

    函数体

}

其中的 class 关键字也可以用 typename 关键字替换。

一个函数函数模板的例子

比如,求一组数中的最大值,既需要支持整数,也需要支持浮点数,我们来看下怎么使用函数模板来实现:

#include <iostream>

using namespace std;

template <class T>

//求一个数组中的最大值

T MaxElement(T a[], int size) //size是数组元素个数

{

    T tmpMax = a[0];

    for (int i = 1; i < size; ++i)

        if (tmpMax < a[i])

            tmpMax = a[i];

    return tmpMax;

}

int main()

{

    int a[5] = { 1,5,2,3,4 };

    float b[5] = { 1.1,5.5,2.2,3.3,4.4 };

    cout << MaxElement(a, 5) << endl;

    cout << MaxElement(b, 4) << endl;

    return 0;

}

T 是类型参数,代表类型。编译器由模板自动生成函数时,会用具体的类型名对模板中所有的类型参数进行替换,其他部分则原封不动地保留。同一个类型参数只能替换为同一种类型。编译器在编译到调用函数模板的语句时,会根据实参的类型判断该如何替换模板中的类型参数。

可以看到,整数数组和浮点数数组,我们都正确的计算到了最大值,说明函数模板起到了作用。

编程要求

根据提示,在右侧编辑器Begin和End之间补充代码,实现一个函数getSum,用来计算并且返回两个数的和,要求使用函数模板来支持各种类型的入参。

测试说明

平台会给出多组入参,调用你编写的函数,将计算结果和正确的结果进行对比,从而判断你的程序是否正确。

测试输入:

0 1 2

其中,第一个数字如果是0,表示输入的是整数,1表示浮点数。(这段逻辑测试脚本中会处理)

预期输出:

input is integer:

1

2

3

开始你的任务吧,祝你成功!

a278781bacb14f4b94ef7afda22d8ec0.jpg

 微信公众号:

90eb4a99a49141a89c4af25339bcc4d3.jpg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值