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;
    }

  • 相关阅读:
    WebBrowser无法显示招商银行password输入控件的问题
    对流式计算模型的理解
    Dev BarManager使用方法
    创业的需求分析——创业杂记【1】
    使用Apktools反编译apk应用
    【JUnit4.10源码分析】3.4 Description与測试树
    基于KWIC 的keyword匹配算法(管道+过滤器模式下实现)
    纯CSS滑动效果
    PhotoSwipe简介
    包加载失败的解决办法
  • 原文地址:https://www.cnblogs.com/linyawen/p/2288142.html
Copyright © 2011-2022 走看看