zoukankan      html  css  js  c++  java
  • C++生产和使用的临时对象

    

    所谓暂时对象就是一种无名对象。

    它的出现假设不在程序猿的预期之下(比如不论什么pass by value操作都会引发copy操作,于是形成一个暂时对象),往往照成效率上的负担。

    但有时候能够制造一些暂时对象,却又使程序干净清爽的技巧。

    刻意制造暂时对象的方法是。在型别名称之后直接加一对小括号,并可指定初值,比如int(8),其意义相当于调用对应的constructor,且不指定对象名称。STL最常将此技巧应用于仿函数与算法的搭配上。

    比如:

    #include <vector>

    #include <algorithm>

    #include <iostream>

     

    using namespace std;

     

    template <typename T>

    class print

    {

           public:

                  voidoperator()(const T& elem)

                  {

                         cout<< elem << ' ';

                  }

    };

    int main(int argc, char* argv[])

    {

           intia[6] = {0,1,2,3,4,5};

           vector<int>iv(ia,ia+6);

     

           for_each(iv.begin(),iv.end(),print<int>());

    }

    最后一行便是产生“class template 具现体”print<int>的一个暂时对象。这个对象被传入for_each()之中起作用。当for_each()结束时。这个暂时对象它结束了它的生命。

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    深入 kernel panic 流程【转】
    HDMI驱动热插拔检测方法
    WFE和WFI的区别
    SMP多核启动
    CPUFreq驱动
    DMA与cache一致性的问题
    深度理解select、poll和epoll
    Memory barrier 简介
    thinkphp的删除操作
    HOST文件配置
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4677104.html
Copyright © 2011-2022 走看看