c++打卡第二十九天

模板编程

对于模板编程,写template<typename T>

一、函数模板编程

1、编辑模板

表明返回值T 或者无返回值+函数名(T&变量)

 

2、例题描述

请使用模板参数设计实现双倍功能函数,函数功能要求实现返回值为输入参数的两倍,函数参数应能适应整型、浮点型、双精度型等各种类型,返回值类型与参数一样。

裁判测试程序样例:

#include <iostream>
using namespace std;

/*请在这里填写答案*/

int main(void){
    char c='\0';
    int i=0;
    long l=0;
    scanf("%c%d%ld",&c,&i,&l);
    cout<<Double(c)<<endl;
    cout<<Double(i)<<endl;
    cout<<Double(l)<<endl;
    float f=1.1;
    double d=2.2;
    scanf("%f%lf",&f,&d);
    cout<<Double(f)<<endl;
    cout<<Double(d)<<endl;
    return 0;
}

输入样例:

0
1
200000
3.45
6.789

输出样例:

`
2
400000
6.9
13.578

3、代码实现

template <typename T>
T Double(T& a)
{
    return 2*a;
}

二、类模板编程

1、模板

class 类名

{

};

2、例题

请使用模板参数设计实现绝对值模板类Absolute,Absolute类功能要求成员函数getValue(void)const计算类数据的绝对值,类数据类型应能适应整型、浮点型、双精度型等各种类型,绝对值类型与类数据一样。

裁判测试程序样例:

#include <iostream>
using namespace std;

/*请在这里填写答案*/

int main(void){
    char c='\0';
    int i=0;
    long l=0;
    scanf("%c%d%ld",&c,&i,&l);
    float f=1.1;
    double d=2.2;
    scanf("%f%lf",&f,&d);
    Absolute<char> dc(c);
    cout<<dc.getValue()<<endl;
    Absolute<int> di(i);
    cout<<di.getValue()<<endl;
    Absolute<long> dl(l);
    cout<<dl.getValue()<<endl;
    Absolute<float> df(f);
    cout<<df.getValue()<<endl;
    Absolute<double> dd(d);
    cout<<dd.getValue()<<endl;
    return 0;
}

2、代码实现

template <class T>
class Absolute
{
    public:
        Absolute(T n_num)
        {
            this->num=n_num;
        }
         T getValue(void)const
        {
            return num>0?num:-num;
        }
        T num;
 } ;

3、结果实现

 

posted @ 2023-05-17 22:20  七安。  阅读(11)  评论(0编辑  收藏  举报