C++ 模板函数

 1   函数模板的声明

       

template<typename T>

T fuc(T x, int y)

{

    T x;

    //……

}

如果主调函数中有以下语句:

double d;      int a;

fuc(d,a);

则系统将用实参d的数据类型double去代替函数模板中的T生成函数:

double fuc(double x,int y)

{

    double x;

    //……

}

关键字typename也可以使用关键字class,这时数据类型参数标识符就可以使用所有的C++数据类型。

template<class MatrixT>
      void init_les( MatrixT& _A, std::vector< double >& _b)
      {
          _A(0,0) = 25  ; _A(0,1) = 0 ; _A(0,2) = -15; _A(0,3) = 0 ;
          _A(1,0) = 0   ; _A(1,1) = 20; _A(1,2) = -8 ; _A(1,3) = -4;
          _A(2,0) = -15 ; _A(2,1) = -8; _A(2,2) = 17 ; _A(2,3) = 0 ;
          _A(3,0) = 0   ; _A(3,1) = -4; _A(3,2) = 0  ; _A(3,3) = 4 ;

    _b[0] = 0; _b[1] = 4; _b[2] = -2; _b[3] = 0;

}


2     例如如果我们想让函数模板minus()的表达式Parm::name 是个类型名因而使整个表达式是一个指针声明我们应如下修改

      template <class Parm, class U>

      Parm minus( Parm* array, U value )

      {

            typename Parm::name * p; // ok: 指针声明     注意 typename

      }

3   如同非模板函数一样函数模板也可以被声明为inline extern 应该把指示符放

   在模板参数表后面而不是在关键字template 前面

        // ok: 关键字跟在模板参数表之后

     template <typename Type>

     inline

      Type min( Type, Type );

     

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值