模板

模板

模板分为函数模板和类模板。

1、函数模板:
定义格式:
template<模板形参表>
返回值类型 函数名(参数表){
函数体
}

其中,template是模板定义的关键字。
<模板形参表>中包含一个或多个用逗号分开得模板形式参数,每一项均由关键字class或typename引导一个由用户命名的标识符,此标识符为模板参数。如

#include <iostream>
template <class T>  
T Max(T x, T y)
{
    return (x>y) ?x: y;
}

2、类模板
定义格式:
template<模板形参表>
class 类模板名
{
成员的声明:
}

类模板是参数化的类,即用于实现数据类型参数化的类。应用类模板可以使类中的数据成员、成员函数的参数以及成员函数的返回值能根据模板参数匹配情况取任意数据类型。这种类型既可以是C++预定义的数据类型,也可以是用户自定义的数据类型。如:

#include <iostream> 
using namespace std;
template <typename T>         
class Square                         
{  
    T x;     
 public: 
        Square(T xx):x(xx){  } 
        T fun(){return x*x;} 
}; 

类模板成员函数的定义:
类模板中的成员函数定义,若放在类模板的定义之中则与类的成员函数的定义方法相同;若在类模板之外定义,则成员函数定义格式如下:
template<模板形参表>
返回值类型 类模板名<形参名表>::成员函数名(参数表)
{
成员函数体
}

普通类的成员函数在类外定义:

double Rectangle::circumference( )
{   
	return 2*length*width;
}

类模板的成员函数在类外定义:

template<class T> 
T Rectangle<T>::circumference( )
{  
	return 2*length*width;
}

类模板实例化的格式:
类模板名 <实际类型>
定义模板类的对象的格式:
类模板名 <实际类型> 对象名(实参表);

#include <iostream> 
using namespace std;
template <typename T>              
class Square   {                      
T x;     
 public: 
        Square(T xx):x(xx){} 
        T fun(){return x*x;} 
}; 
int main() {
     Square <int>    inta(15); 
     Square <float>    floata(16.5); 
     Square <double>    doublea(15.55);
     cout<<"square of int data:"<<inta.fun()<<endl;
     cout<<"square of float data:"<<floata.fun()<<endl;
     cout<<"square of double data:"<<doublea.fun()<<endl;
      return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值