C++ 模板函数

来源:互联网 发布:软件工程硕士开题报告 编辑:程序博客网 时间:2024/06/05 11:04

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

     

 

 

 

原创粉丝点击