码迷,mamicode.com
首页 > 编程语言 > 详细

c++模板

时间:2018-02-12 13:35:07      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:space   pen   span   test   返回   模板类   模板   操作   相同   

模板一般分函数模板与类模板

函数模板:

解决,不同数据进行同种操作时,可以给数据定义一个模板类型,以达到函数的通用性

基本语法

template <typename T> //定义模版类型名T

//模版函数定义

T test(T x){

return x;

}

计算绝对值函数:

#include <iostream>
using namespace std;
template <typename T>
T abs(T temp)
{
    temp = temp > 0 ? temp : -temp;
    return temp;
}

int main()
{
    int  i = 10;
    double d = -5.5;
    cout << abs(i) << " " << abs(d) << endl;
    return 0;
}

通过函数模板,计算数值的绝对值,就不用重复为不同类型数据定义函数;

类模板

解决同一种类,定义不过数据,或,其成员函数对不同数据作相同处理;

类模板基本语法:

template <class T>

class abs

{

private:

  int i;

  T x;

public:

  abs(T a, T b){}

}

类模板对象的创建:

abs <int> a;

abs <double> b;

使用例:

#include <iostream>
using namespace std;
template <class T>
class Tes
{
  private:
    T i;
    T j;

  public:
    Tes(T x = 0, T y = 0)
    {
        i = x;
        j = y;
    }
    T put()
    {    
        return i * j;
    }
    ~Tes() {}
};
int main()
{
    Tes <int> a(2, 5);
    cout << a.put() <<endl;
    Tes <double> b(2.5, 5.5);
    cout << b.put() <<endl;
    return 0;
}

成员函数外部定义方法:

基本形式:

template<模板形参列表> 函数返回类型 类名<模板形参名>::函数名(参数列表){函数体},

template<class T> void Tes<T>::add(参数列表){函数体},

#include <iostream>
using namespace std;
//定义模板类
template <class T>
class Tes
{
  private:
    T i;
    T j;

  public:
    Tes(T x = 0, T y = 0)
    {
        i = x;
        j = y;
    }
    T put()
    {    
        return i * j;
    }
    T add();
    ~Tes() {}
};

//外部定义函数方法
template <class T>
T Tes<T>::add()
{
    return i + j;
}
//主函数
int main()
{
    Tes <int> a(2, 5);
    cout << a.put() <<endl;
    cout << a.add() <<endl;
    Tes <double> b(2.5, 5.5);
    cout << b.put() <<endl;
    cout << b.add() <<endl;
    return 0;
}

总结:

在类模板中,只要使用到类名的,后面就要有<>的存在;

c++模板

标签:space   pen   span   test   返回   模板类   模板   操作   相同   

原文地址:https://www.cnblogs.com/flowingwind/p/8443849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!