zoukankan      html  css  js  c++  java
  • C++之模板

    1,函数模板

    #include "stdafx.h"
    #include <iostream>

    template <typename T>//加法函数模板
    T Add(T x,T y)//二元
    {
    std::cout<<"调用模板函数:";
    return x+y;
    }

    template <typename T>//重载加法函数模板
    T Add(T x,T y,T z)//三元
    {
    std::cout<<"调用重载模板函数:";
    return x+y+z;
    }


    int main_19()
    {
    double x1=10.10,y1=10.10;
    std::cout<<Add(x1,y1)<<std::endl;//调用模板函数
    //相当于调用函数double Add(double,double)
    std::cout<<Add(x1,y1,y1)<<std::endl;//调用重载模板函数
    //相当于调用函数double Add(double,double,double)

    return0;
    }

    2,类模板

    #include "stdafx.h"
    #include <iostream>
    #include <string>

    template <typename T>//在类模板定义之前,都需要加上模板声明
    class BinaryOperation//二目运算类
    {
    private:
    T x;
    T y;
    char op;
    void add()
    {
    std::cout<<x<<op<<y<<"="<<x+y<<std::endl;
    }
    void sub()
    {
    std::cout<<x<<op<<y<<"="<<x-y<<std::endl;
    }
    void mul();
    void div();
    public:
    BinaryOperation(T x,T y):x(x),y(y)
    {
    }
    void determineOp(char op);
    };


    //在类外定义成员函数:
    //在成员函数定义之前进行模板声明,
    //且在成员函数名之前加上"类名<类型参数>::"
    template <typename T>
    void BinaryOperation <typename T>::mul()
    {
    std::cout<<x<<op<<y<<"="<<x*y<<std::endl;
    }

    template <typename T>
    void BinaryOperation <typename T>::div()
    {

    std::cout<<x<<op<<y<<"="<<x/y<<std::endl;
    }

    template <typename T>
    void BinaryOperation <typename T>::determineOp(char op)
    {
    this->op=op;
    switch(op)
    {
    case'+':
    add();
    break;
    case'-':
    sub();
    break;
    case'*':
    mul();
    break;
    case'/':
    div();
    break;
    default:
    break;
    }
    }

    int main()
    {

    BinaryOperation<int> op(10,10);
    op.determineOp('+');
    op.determineOp('-');
    op.determineOp('*');
    op.determineOp('/');

    return0;
    }

  • 相关阅读:
    映射和分析
    文档操作
    向 Nginx 主进程发送 USR1 信号
    ES集群7.3.0设置快照,存储库进行索引备份和恢复等
    ES7.3.0配置邮件告警
    Elasticsearch 史上最全最常用工具清单
    Grok在线调试网址
    Linux 小知识翻译
    Linux 小知识翻译
    Linux 小知识翻译
  • 原文地址:https://www.cnblogs.com/linyawen/p/2288142.html
Copyright © 2011-2022 走看看