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

C++ 模板

时间:2015-10-03 21:52:23      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

1、定义: 实现代码重用机制的一种工具, 实现类型参数化, 即把类型定义为参数, 实现真正的代码可重用性。 分为两类:函数模板, 类模板。

2、函数模板:

  template <class/typename T>

     返回类型  函数名 (形参表) {

    //函数定义体

  }

 

3、类模板:

  template <class/typename T>

  class 类名 {

    //类定义

  };

 

4、非类型模板参数

  非类型模板参数可以是常整数(包括枚举)或者指向外部链接对象的指针。

5、模板的特化

  (1)、模板的特化:打算给模板函数(类)的某个特定类型写一个函数。代替编译器完成了对指定类型的特化工作。

  template <> //代表一个模板函数

  int min<int> (int a, int b) {

    return a < b ? a : b;

  }

  (2)、偏特化:只针对模板类型中部分类型进行特化。

 

6、仿函数:

  (1)、重载了()操作符的对象。

    注:仿函数不是函数, 是个类; 仿函数重载了()操作符。

    struct DoSomething {

      void operator() (int i) {

      }

    }

 

    typedef void(*DoSomethingPtr)(int);

 

    for_each, 它的源代码大致如下:

    template< typename Iterator, typename Functor >
    void for_each( Iterator begin, Iterator end, Fucntor func ) {
        for( ; begin!=end; begin++ )
        func( *begin );
    }

    这个 for 循环遍历了容器中的每一个元素,对每个元素调用了仿函数 func,这样就实现了 对“每个元素做同样的事”这样一种编程的思想。

C++ 模板

标签:

原文地址:http://www.cnblogs.com/wmsir/p/4853811.html

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